summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey C. Ollie <jeff@ocjtech.us>2008-08-12 22:00:45 -0500
committerJeffrey C. Ollie <jeff@ocjtech.us>2008-08-12 22:00:45 -0500
commit410154779451b21ea14d7f6272c320059a772949 (patch)
tree364b2215a872cc03c6e6d1e4d70e0586b96c1060
downloadnohgooee-410154779451b21ea14d7f6272c320059a772949.tar.gz
nohgooee-410154779451b21ea14d7f6272c320059a772949.tar.xz
nohgooee-410154779451b21ea14d7f6272c320059a772949.zip
Import files from BitTorrent 4.4.0
http://download.bittorrent.com/dl/BitTorrent-4.4.0.tar.gz
-rw-r--r--BitTorrent/BeautifulSupe.py132
-rw-r--r--BitTorrent/Choker.py157
-rw-r--r--BitTorrent/ClientIdentifier.py157
-rw-r--r--BitTorrent/Connecter.py338
-rw-r--r--BitTorrent/ConvertedMetainfo.py288
-rw-r--r--BitTorrent/CurrentRateMeasure.py48
-rw-r--r--BitTorrent/Desktop.py33
-rw-r--r--BitTorrent/Downloader.py363
-rw-r--r--BitTorrent/DownloaderFeedback.py139
-rw-r--r--BitTorrent/Encoder.py286
-rw-r--r--BitTorrent/GUI.py679
-rw-r--r--BitTorrent/GetTorrent.py94
-rw-r--r--BitTorrent/HTTPHandler.py188
-rw-r--r--BitTorrent/IPC.py442
-rw-r--r--BitTorrent/LaunchPath.py54
-rw-r--r--BitTorrent/NatCheck.py101
-rw-r--r--BitTorrent/NatTraversal.py757
-rw-r--r--BitTorrent/NewVersion.py278
-rw-r--r--BitTorrent/PeerID.py28
-rw-r--r--BitTorrent/PiecePicker.py138
-rw-r--r--BitTorrent/RateLimiter.py190
-rw-r--r--BitTorrent/RateMeasure.py63
-rw-r--r--BitTorrent/RawServer.py501
-rw-r--r--BitTorrent/RawServer_magic.py63
-rw-r--r--BitTorrent/RawServer_twisted.py771
-rw-r--r--BitTorrent/Rerequester.py293
-rw-r--r--BitTorrent/StatusLight.py108
-rw-r--r--BitTorrent/Storage.py276
-rw-r--r--BitTorrent/StorageWrapper.py408
-rw-r--r--BitTorrent/TorrentQueue.py848
-rw-r--r--BitTorrent/TrayIcon.py95
-rw-r--r--BitTorrent/Uploader.py97
-rw-r--r--BitTorrent/__init__.py88
-rw-r--r--BitTorrent/bencode.py136
-rw-r--r--BitTorrent/bitfield.py77
-rw-r--r--BitTorrent/btformats.py140
-rw-r--r--BitTorrent/configfile.py222
-rw-r--r--BitTorrent/defaultargs.py306
-rw-r--r--BitTorrent/defer.py56
-rw-r--r--BitTorrent/download.py593
-rw-r--r--BitTorrent/language.py202
-rw-r--r--BitTorrent/launchmanycore.py263
-rw-r--r--BitTorrent/makemetafile.py263
-rw-r--r--BitTorrent/obsoletepythonsupport.py42
-rw-r--r--BitTorrent/parseargs.py187
-rw-r--r--BitTorrent/parsedir.py150
-rw-r--r--BitTorrent/platform.py390
-rw-r--r--BitTorrent/prefs.py89
-rw-r--r--BitTorrent/selectpoll.py68
-rw-r--r--BitTorrent/track.py877
-rw-r--r--BitTorrent/zurllib.py269
-rw-r--r--INSTALL.unix.txt65
-rw-r--r--LICENSE.txt143
-rw-r--r--MANIFEST.in32
-rw-r--r--PKG-INFO10
-rw-r--r--README.txt133
-rw-r--r--TRACKERLESS.txt47
l---------bittorrent1
l---------bittorrent-console1
-rwxr-xr-xbittorrent-console.py308
l---------bittorrent-curses1
-rwxr-xr-xbittorrent-curses.py450
l---------bittorrent-tracker1
-rwxr-xr-xbittorrent-tracker.py24
-rwxr-xr-xbittorrent.py3834
l---------changetracker-console1
-rwxr-xr-xchangetracker-console.py36
-rw-r--r--credits-l10n.txt50
-rw-r--r--credits.txt45
-rw-r--r--images/bittorrent.icobin0 -> 13902 bytes
-rw-r--r--images/icons/default/abort.pngbin0 -> 3856 bytes
-rw-r--r--images/icons/default/broken.pngbin0 -> 3827 bytes
-rw-r--r--images/icons/default/finished.pngbin0 -> 3885 bytes
-rw-r--r--images/icons/default/info.pngbin0 -> 3824 bytes
-rw-r--r--images/icons/default/pause.pngbin0 -> 3137 bytes
-rw-r--r--images/icons/default/paused.pngbin0 -> 3230 bytes
-rw-r--r--images/icons/default/play.pngbin0 -> 3465 bytes
-rw-r--r--images/icons/default/queued.pngbin0 -> 4285 bytes
-rw-r--r--images/icons/default/remove.pngbin0 -> 3916 bytes
-rw-r--r--images/icons/default/running.pngbin0 -> 3472 bytes
-rw-r--r--images/icons/default/status-broken.pngbin0 -> 3179 bytes
-rw-r--r--images/icons/default/status-natted.pngbin0 -> 3286 bytes
-rw-r--r--images/icons/default/status-pre-natted.pngbin0 -> 3316 bytes
-rw-r--r--images/icons/default/status-running.pngbin0 -> 3433 bytes
-rw-r--r--images/icons/default/status-starting.pngbin0 -> 3226 bytes
-rw-r--r--images/icons/default/status-stopped.pngbin0 -> 3101 bytes
-rw-r--r--images/icons/default/trashcan.pngbin0 -> 3321 bytes
-rw-r--r--images/icons/old/broken.pngbin0 -> 1046 bytes
-rw-r--r--images/icons/old/finished.pngbin0 -> 1076 bytes
-rw-r--r--images/icons/old/info.pngbin0 -> 1162 bytes
-rw-r--r--images/icons/old/pause.pngbin0 -> 450 bytes
-rw-r--r--images/icons/old/paused.pngbin0 -> 1668 bytes
-rw-r--r--images/icons/old/play.pngbin0 -> 759 bytes
-rw-r--r--images/icons/old/queued.pngbin0 -> 1650 bytes
-rw-r--r--images/icons/old/remove.pngbin0 -> 315 bytes
-rw-r--r--images/icons/old/running.pngbin0 -> 799 bytes
-rw-r--r--images/icons/old/status-broken.pngbin0 -> 821 bytes
-rw-r--r--images/icons/old/status-natted.pngbin0 -> 762 bytes
-rw-r--r--images/icons/old/status-pre-natted.pngbin0 -> 767 bytes
-rw-r--r--images/icons/old/status-running.pngbin0 -> 653 bytes
-rw-r--r--images/icons/old/status-starting.pngbin0 -> 811 bytes
-rw-r--r--images/icons/old/status-stopped.pngbin0 -> 821 bytes
-rw-r--r--images/logo/bittorrent_32.pngbin0 -> 4326 bytes
-rw-r--r--images/logo/bittorrent_96.pngbin0 -> 19020 bytes
-rw-r--r--khashmir/KRateLimiter.py75
-rw-r--r--khashmir/__init__.py0
-rw-r--r--khashmir/actions.py349
-rw-r--r--khashmir/cache.py52
-rw-r--r--khashmir/const.py74
-rw-r--r--khashmir/hammerlock.py37
-rw-r--r--khashmir/inserter.py49
-rw-r--r--khashmir/khash.py120
-rw-r--r--khashmir/khashmir.py442
-rw-r--r--khashmir/knet.py76
-rw-r--r--khashmir/knode.py82
-rw-r--r--khashmir/krpc.py240
-rw-r--r--khashmir/kstore.py119
-rw-r--r--khashmir/ktable.py338
-rw-r--r--khashmir/node.py95
-rw-r--r--khashmir/setup.py70
-rw-r--r--khashmir/test.py21
-rw-r--r--khashmir/test_khashmir.py166
-rw-r--r--khashmir/test_krpc.py161
-rw-r--r--khashmir/test_kstore.py91
-rw-r--r--khashmir/unet.py84
-rw-r--r--khashmir/util.py69
-rw-r--r--khashmir/utkhashmir.py224
-rw-r--r--language_codes.py11
l---------launchmany-console1
-rwxr-xr-xlaunchmany-console.py72
l---------launchmany-curses1
-rwxr-xr-xlaunchmany-curses.py302
-rw-r--r--makei18n.sh50
l---------maketorrent1
l---------maketorrent-console1
-rwxr-xr-xmaketorrent-console.py65
-rwxr-xr-xmaketorrent.py577
-rw-r--r--po/af.po3120
-rw-r--r--po/ar.po2886
-rw-r--r--po/bg.po2866
-rw-r--r--po/bs.po2880
-rw-r--r--po/ca.po2886
-rw-r--r--po/cs.po2828
-rw-r--r--po/da.po2842
-rw-r--r--po/de.po2880
-rw-r--r--po/el.po2952
-rw-r--r--po/eo.po2893
-rw-r--r--po/es.po2873
-rw-r--r--po/es_MX.po2869
-rw-r--r--po/et.po2888
-rw-r--r--po/eu.po2876
-rw-r--r--po/fa.po2884
-rw-r--r--po/fi.po2830
-rw-r--r--po/fr.po2874
-rw-r--r--po/ga.po2878
-rw-r--r--po/gl.po2888
-rw-r--r--po/he.po2796
-rw-r--r--po/hr.po2900
-rw-r--r--po/hu.po3134
-rw-r--r--po/hy.po2880
-rw-r--r--po/is.po3096
-rw-r--r--po/it.po2868
-rw-r--r--po/ja.po2769
-rw-r--r--po/ka.po2876
-rw-r--r--po/ko.po2772
-rw-r--r--po/lt.po2884
-rw-r--r--po/ml.po2876
-rw-r--r--po/ms.po2905
-rw-r--r--po/nb_NO.po2848
-rw-r--r--po/nl.po2860
-rw-r--r--po/nn_NO.po2876
-rw-r--r--po/piglatin.po2649
-rw-r--r--po/pl.po2867
-rw-r--r--po/pt.po2847
-rw-r--r--po/pt_BR.po2854
-rw-r--r--po/ro.po2864
-rw-r--r--po/ru.po2855
-rw-r--r--po/sk.po2997
-rw-r--r--po/sl.po2825
-rw-r--r--po/sq.po2887
-rw-r--r--po/sv.po2850
-rw-r--r--po/th.po2880
-rw-r--r--po/tlh.po2876
-rw-r--r--po/tr.po2842
-rw-r--r--po/uk.po2888
-rw-r--r--po/vi.po2868
-rw-r--r--po/zh_CN.po2771
-rw-r--r--po/zh_TW.po2770
-rw-r--r--public.keybin0 -> 478 bytes
-rw-r--r--redirdonate.html1
-rw-r--r--setup.py96
-rw-r--r--test/test_ClientIdentifier.py193
l---------torrentinfo-console1
-rwxr-xr-xtorrentinfo-console.py97
-rw-r--r--windows_installer/build.bat111
-rw-r--r--windows_installer/installer.directory.ini56
-rw-r--r--windows_installer/installer.nsi651
-rw-r--r--windows_installer/installer.upgrade.ini28
-rw-r--r--windows_installer/installer.warning.rtf8
-rw-r--r--windows_installer/template.nlf189
-rw-r--r--windows_installer/template.nsh12
-rw-r--r--windows_installer/winmakei18n.py37
-rw-r--r--windows_installer/winprepnsi.py98
-rw-r--r--windows_installer/winsetup.py111
204 files changed, 170440 insertions, 0 deletions
diff --git a/BitTorrent/BeautifulSupe.py b/BitTorrent/BeautifulSupe.py
new file mode 100644
index 0000000..79072d4
--- /dev/null
+++ b/BitTorrent/BeautifulSupe.py
@@ -0,0 +1,132 @@
+# A very very minimal BeautifulSoup immitation.
+#
+# BS uses SGMLlib to parse, which converts everything to lower case.
+# This uses real xml parsing to mimic the parts of BS we use.
+
+import xml.dom.minidom
+
+def _getText(node):
+ nodelist = node.childNodes
+ rc = []
+ for node in nodelist:
+ if node.nodeType == node.TEXT_NODE:
+ rc.append(str(node.data))
+ return rc
+
+def _getNodesAsTags(root):
+ nodelist = root.childNodes
+ tags = []
+ for node in nodelist:
+ if node.nodeType == node.ELEMENT_NODE:
+ tags.append(Tag(node))
+ return tags
+
+class Tag(object):
+ def __init__(self, node):
+ self.node = node
+ self.name = node.nodeName
+ self.contents = _getNodesAsTags(self.node)
+ text = _getText(self.node)
+ self.contents += text
+ self.text = ''.join(text)
+
+ def child_elements(self):
+ children = []
+ for tag in self.contents:
+ if isinstance(tag, Tag):
+ children.append(tag)
+ return children
+
+ def get(self, tagname):
+ got = self.first(tagname)
+ if got:
+ return got.text
+
+ def first(self, tagname):
+ found = None
+
+ for tag in self.contents:
+ if isinstance(tag, Tag):
+ if tag.name == tagname:
+ found = tag
+ break
+
+ return found
+
+class BeautifulSupe(object):
+
+ def __init__(self, data):
+ #please don't give us your null terminators
+ data = data.strip(chr(0))
+ self.dom = xml.dom.minidom.parseString(data)
+
+ def first(self, tagname, root = None):
+ found = None
+ if root == None:
+ e = self.dom.getElementsByTagName(tagname)
+ if len(e) > 0:
+ found = e[0]
+ else:
+ for node in root.childNodes:
+ if node.nodeName == tagname:
+ found = node
+ break
+
+ if not found:
+ return None
+
+ tag = Tag(found)
+ return tag
+
+ def fetch(self, tagname, restraints = {}):
+ e = self.dom.getElementsByTagName(tagname)
+
+ matches = []
+
+ for node in e:
+ match = 1
+
+ for restraint in restraints:
+ f = self.first(restraint, node)
+ if not f:
+ match = 0
+ break
+ text = restraints[restraint]
+ if not f.contents[0].startswith(text):
+ match = 0
+ break
+
+ if match:
+ tag = Tag(node)
+ matches.append(tag)
+
+ return matches
+
+
+ def scour(self, prefix, suffix = None, node = None):
+ if node is None:
+ root = self.dom.getElementsByTagName(self.dom.documentElement.tagName)[0]
+ node = root
+
+ matches = []
+
+ for node in node.childNodes:
+ match = 0
+
+ name = node.nodeName
+
+ if name.startswith(prefix):
+ if suffix:
+ if name.endswith(suffix):
+ match = 1
+ else:
+ match = 1
+
+ if match:
+ tag = Tag(node)
+ matches.append(tag)
+
+ matches += self.scour(prefix, suffix, node)
+
+ return matches
+
diff --git a/BitTorrent/Choker.py b/BitTorrent/Choker.py
new file mode 100644
index 0000000..ed3d500
--- /dev/null
+++ b/BitTorrent/Choker.py
@@ -0,0 +1,157 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from random import randrange
+from math import sqrt
+
+class Choker(object):
+
+ def __init__(self, config, schedule, done = lambda: False):
+ self.config = config
+ self.schedule = schedule
+ self.connections = []
+ self.count = 0
+ self.done = done
+ self.unchokes_since_last = 0
+ schedule(self._round_robin, 10)
+
+ def _round_robin(self):
+ self.schedule(self._round_robin, 10)
+ self.count += 1
+ if self.done():
+ self._rechoke_seed(True)
+ return
+ if self.count % 3 == 0:
+ for i in xrange(len(self.connections)):
+ u = self.connections[i].upload
+ if u.choked and u.interested:
+ self.connections = self.connections[i:] + self.connections[:i]
+ break
+ self._rechoke()
+
+ def _rechoke(self):
+ if self.done():
+ self._rechoke_seed()
+ return
+ preferred = []
+ for i in xrange(len(self.connections)):
+ c = self.connections[i]
+ if c.upload.interested and not c.download.is_snubbed() and c.download.have.numfalse:
+ preferred.append((-c.download.get_rate(), i))
+ preferred.sort()
+ prefcount = min(len(preferred), self._max_uploads() -1)
+ mask = [0] * len(self.connections)
+ for _, i in preferred[:prefcount]:
+ mask[i] = 1
+ count = max(1, self.config['min_uploads'] - prefcount)
+ for i in xrange(len(self.connections)):
+ c = self.connections[i]
+ u = c.upload
+ if mask[i]:
+ u.unchoke(self.count)
+ elif count > 0 and c.download.have.numfalse:
+ u.unchoke(self.count)
+ if u.interested:
+ count -= 1
+ else:
+ u.choke()
+
+ def _rechoke_seed(self, force_new_unchokes = False):
+ if force_new_unchokes:
+ # number of unchokes per 30 second period
+ i = (self._max_uploads() + 2) // 3
+ # this is called 3 times in 30 seconds, if i==4 then unchoke 1+1+2
+ # and so on; substract unchokes recently triggered by disconnects
+ num_force_unchokes = max(0, (i + self.count % 3) // 3 - \
+ self.unchokes_since_last)
+ else:
+ num_force_unchokes = 0
+ preferred = []
+ new_limit = self.count - 3
+ for i in xrange(len(self.connections)):
+ c = self.connections[i]
+ u = c.upload
+ if not u.choked and u.interested and c.download.have.numfalse:
+ if u.unchoke_time > new_limit or (
+ u.buffer and c.connection.is_flushed()):
+ preferred.append((-u.unchoke_time, -u.get_rate(), i))
+ else:
+ preferred.append((1, -u.get_rate(), i))
+ num_kept = self._max_uploads() - num_force_unchokes
+ assert num_kept >= 0
+ preferred.sort()
+ preferred = preferred[:num_kept]
+ mask = [0] * len(self.connections)
+ for _, _, i in preferred:
+ mask[i] = 1
+ num_nonpref = self._max_uploads() - len(preferred)
+ if force_new_unchokes:
+ self.unchokes_since_last = 0
+ else:
+ self.unchokes_since_last += num_nonpref
+ last_unchoked = None
+ for i in xrange(len(self.connections)):
+ c = self.connections[i]
+ u = c.upload
+ if not mask[i]:
+ if not u.interested:
+ u.choke()
+ elif u.choked:
+ if num_nonpref > 0 and c.connection.is_flushed() and c.download.have.numfalse:
+ u.unchoke(self.count)
+ num_nonpref -= 1
+ if num_nonpref == 0:
+ last_unchoked = i
+ else:
+ if num_nonpref == 0 or not c.download.have.numfalse:
+ u.choke()
+ else:
+ num_nonpref -= 1
+ if num_nonpref == 0:
+ last_unchoked = i
+ if last_unchoked is not None:
+ self.connections = self.connections[last_unchoked + 1:] + \
+ self.connections[:last_unchoked + 1]
+
+ def connection_made(self, connection):
+ p = randrange(len(self.connections) + 1)
+ self.connections.insert(p, connection)
+
+ def connection_lost(self, connection):
+ self.connections.remove(connection)
+ if connection.upload.interested and not connection.upload.choked:
+ self._rechoke()
+
+ def interested(self, connection):
+ if not connection.upload.choked:
+ self._rechoke()
+
+ def not_interested(self, connection):
+ if not connection.upload.choked:
+ self._rechoke()
+
+ def _max_uploads(self):
+ uploads = self.config['max_uploads']
+ rate = self.config['max_upload_rate']
+ if uploads > 0:
+ pass
+ elif rate <= 0:
+ uploads = 7 # unlimited, just guess something here...
+ elif rate < 9:
+ uploads = 2
+ elif rate < 15:
+ uploads = 3
+ elif rate < 42:
+ uploads = 4
+ else:
+ uploads = int(sqrt(rate * .6))
+ return uploads
diff --git a/BitTorrent/ClientIdentifier.py b/BitTorrent/ClientIdentifier.py
new file mode 100644
index 0000000..cec2fa5
--- /dev/null
+++ b/BitTorrent/ClientIdentifier.py
@@ -0,0 +1,157 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Written by Matt Chisholm
+# Client list updated by Ed Savage-Jones - May 28th 2005
+
+import re
+
+v64p = '[\da-zA-Z.-]{3}'
+
+matches = (
+ ('-AZ(?P<version>\d+)-+.+$' , "Azureus" ),
+ ('M(?P<version>\d-\d-\d)--.+$' , "BitTorrent" ),
+ ('T(?P<version>%s)0?-+.+$'%v64p , "BitTornado" ),
+ ('-UT(?P<version>[\dA-F]+)-+.+$' , u"\xb5Torrent" ),
+ ('-TS(?P<version>\d+)-+.+$' , "TorrentStorm" ),
+ ('exbc(?P<bcver>.+)LORD.+$' , "BitLord" ),
+ ('exbc(?P<bcver>[^-][^-]+)(?!---).+$', "BitComet" ),
+ ('-BC0(?P<version>\d+)-.+$' , "BitComet" ),
+ ('FUTB(?P<bcver>.+).+$' , "BitComet Mod1" ),
+ ('xUTB(?P<bcver>.+).+$' , "BitComet Mod2" ),
+ ('A(?P<version>%s)-+.+$'%v64p , "ABC" ),
+ ('S(?P<version>%s)-+.+$'%v64p , "Shadow's" ),
+ (chr(0)*12 + 'aa.+$' , "Experimental 3.2.1b2" ),
+ (chr(0)*12 + '.+$' , "BitTorrent (obsolete)"),
+ ('-G3.+$' , "G3Torrent" ),
+ ('-[Ll][Tt](?P<version>\d+)-+.+$' , "libtorrent" ),
+ ('Mbrst(?P<version>\d-\d-\d).+$' , "burst!" ),
+ ('eX.+$' , "eXeem" ),
+ ('\x00\x02BS.+(?P<strver>UDP0|HTTPBT)$', "BitSpirit v2" ),
+ ('\x00[\x02|\x00]BS.+$' , "BitSpirit v2" ),
+ ('.*(?P<strver>UDP0|HTTPBT)$' , "BitSpirit" ),
+ ('-BOWP?(?P<version>[\dA-F]+)-.+$', "Bits on Wheels" ),
+ ('(?P<rsver>.+)RSAnonymous.+$' , "Rufus Anonymous" ),
+ ('(?P<rsver>.+)RS.+$' , "Rufus" ),
+ ('-ML(?P<version>(\d\.)+\d)(?:\.(?P<strver>CVS))?-+.+$',"MLDonkey"),
+ ('346------.+$' , "TorrentTopia 1.70" ),
+ ('OP(?P<strver>\d{4}).+$' , "Opera" ),
+ ('-KT(?P<version>\d+)(?P<rc>R\d+)-+.+$', "KTorrent" ),
+# Unknown but seen in peer lists:
+ ('-S(?P<version>10059)-+.+$' , "S (unknown)" ),
+ ('-TR(?P<version>\d+)-+.+$' , "TR (unknown)" ),
+ ('S\x05\x07\x06\x00{7}.+' , "S 576 (unknown)" ),
+# Clients I've never actually seen in a peer list:
+ ('exbc..---.+$' , "BitVampire 1.3.1" ),
+ ('-BB(?P<version>\d+)-+.+$' , "BitBuddy" ),
+ ('-CT(?P<version>\d+)-+.+$' , "CTorrent" ),
+ ('-MT(?P<version>\d+)-+.+$' , "MoonlightTorrent" ),
+ ('-BX(?P<version>\d+)-+.+$' , "BitTorrent X" ),
+ ('-TN(?P<version>\d+)-+.+$' , "TorrentDotNET" ),
+ ('-SS(?P<version>\d+)-+.+$' , "SwarmScope" ),
+ ('-XT(?P<version>\d+)-+.+$' , "XanTorrent" ),
+ ('U(?P<version>\d+)-+.+$' , "UPnP NAT Bit Torrent" ),
+ ('-AR(?P<version>\d+)-+.+$' , "Arctic" ),
+ ('(?P<rsver>.+)BM.+$' , "BitMagnet" ),
+ ('BG(?P<version>\d+).+$' , "BTGetit" ),
+ ('-eX(?P<version>[\dA-Fa-f]+)-.+$',"eXeem beta" ),
+ ('Plus12(?P<rc>[\dR]+)-.+$' , "Plus! II" ),
+ ('XBT(?P<version>\d+)[d-]-.+$' , "XBT" ),
+ ('-ZT(?P<version>\d+)-+.+$' , "ZipTorrent" ),
+ ('-BitE\?(?P<version>\d+)-.+$' , "BitEruct" ),
+ ('O(?P<version>%s)-+.+$'%v64p , "Osprey Permaseed" ),
+# Guesses based on Rufus source code, never seen in the wild:
+ ('-BS(?P<version>\d+)-+.+$' , "BTSlave" ),
+ ('-SB(?P<version>\d+)-+.+$' , "SwiftBit" ),
+ ('-SN(?P<version>\d+)-+.+$' , "ShareNET" ),
+ ('-bk(?P<version>\d+)-+.+$' , "BitKitten" ),
+ ('-SZ(?P<version>\d+)-+.+$' , "Shareaza" ),
+ ('-MP(?P<version>\d+)-+.+$' , "MooPolice" ),
+ ('Deadman Walking-.+$' , "Deadman" ),
+ ('270------.+$' , "GreedBT 2.7.0" ),
+ ('XTORR302.+$' , "TorrenTres 0.0.2" ),
+ ('turbobt(?P<version>\d\.\d).+$' , "TurboBT" ),
+ ('DansClient.+$' , "XanTorrent" ),
+ ('-PO(?P<version>\d+)-+.+$' , "PO (unknown)" ),
+ ('-UR(?P<version>\d+)-+.+$' , "UR (unknown)" ),
+# Patterns that should be executed last
+ ('.*Azureus.*' , "Azureus 2.0.3.2" ),
+ )
+
+matches = [(re.compile(pattern, re.DOTALL), name) for pattern, name in matches]
+
+unknown_clients = {}
+
+def identify_client(peerid, log=None):
+ client = 'unknown'
+ version = ''
+ for pat, name in matches:
+ m = pat.match(peerid)
+ if m:
+ client = name
+ d = m.groupdict()
+ if d.has_key('version'):
+ version = d['version']
+ version = version.replace('-','.')
+ if version.find('.') >= 0:
+ version = ''.join(version.split('.'))
+
+ version = list(version)
+ for i,c in enumerate(version):
+ if '0' <= c <= '9':
+ version[i] = c
+ elif 'A' <= c <= 'Z':
+ version[i] = str(ord(c) - 55)
+ elif 'a' <= c <= 'z':
+ version[i] = str(ord(c) - 61)
+ elif c == '.':
+ version[i] = '62'
+ elif c == '-':
+ version[i] = '63'
+ else:
+ break
+ version = '.'.join(version)
+ elif d.has_key('bcver'):
+ bcver = d['bcver']
+ version += str(ord(bcver[0])) + '.'
+ if len(bcver) > 1:
+ version += str(ord(bcver[1])/10)
+ version += str(ord(bcver[1])%10)
+ elif d.has_key('rsver'):
+ rsver = d['rsver']
+ version += str(ord(rsver[0])) + '.'
+ if len(rsver) > 1:
+ version += str(ord(rsver[1])/10) + '.'
+ version += str(ord(rsver[1])%10)
+ if d.has_key('strver'):
+ if d['strver'] is not None:
+ version += d['strver']
+ if d.has_key('rc'):
+ rc = 'RC ' + d['rc'][1:]
+ if version:
+ version += ' '
+ version += rc
+ break
+ if client == 'unknown':
+ # identify Shareaza 2.0 - 2.1
+ if len(peerid) == 20 and chr(0) not in peerid[:15]:
+ for i in range(16,20):
+ if ord(peerid[i]) != (ord(peerid[i - 16]) ^ ord(peerid[31 - i])):
+ break
+ else:
+ client = "Shareaza"
+
+
+ if log is not None and 'unknown' in client:
+ if not unknown_clients.has_key(peerid):
+ unknown_clients[peerid] = True
+ log.write('%s\n'%peerid)
+ log.write('------------------------------\n')
+ return client, version
diff --git a/BitTorrent/Connecter.py b/BitTorrent/Connecter.py
new file mode 100644
index 0000000..2d69a2d
--- /dev/null
+++ b/BitTorrent/Connecter.py
@@ -0,0 +1,338 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Originally written by Bram Cohen, heavily modified by Uoti Urpala
+
+# required for python 2.2
+from __future__ import generators
+
+from binascii import b2a_hex
+from struct import pack, unpack
+
+from BitTorrent.RawServer_magic import Handler
+from BitTorrent.bitfield import Bitfield
+from BitTorrent.obsoletepythonsupport import *
+
+def toint(s):
+ return unpack("!i", s)[0]
+
+def tobinary(i):
+ return pack("!i", i)
+
+CHOKE = chr(0)
+UNCHOKE = chr(1)
+INTERESTED = chr(2)
+NOT_INTERESTED = chr(3)
+# index
+HAVE = chr(4)
+# index, bitfield
+BITFIELD = chr(5)
+# index, begin, length
+REQUEST = chr(6)
+# index, begin, piece
+PIECE = chr(7)
+# index, begin, piece
+CANCEL = chr(8)
+
+# 2-byte port message
+PORT = chr(9)
+
+# reserved flags
+DHT = 1
+FLAGS = '\0' * 7 + '\1'
+protocol_name = 'BitTorrent protocol'
+
+
+class Connection(Handler):
+
+ def __init__(self, encoder, connection, id, is_local):
+ self.encoder = encoder
+ self.connection = connection
+ self.connection.handler = self
+ self.id = id
+ self.ip = connection.ip
+ self.locally_initiated = is_local
+ self.complete = False
+ self.closed = False
+ self.got_anything = False
+ self.next_upload = None
+ self.upload = None
+ self.download = None
+ self._buffer = []
+ self._buffer_len = 0
+ self._reader = self._read_messages()
+ self._next_len = self._reader.next()
+ self._partial_message = None
+ self._outqueue = []
+ self.choke_sent = True
+ self.uses_dht = False
+ self.dht_port = None
+ if self.locally_initiated:
+ connection.write(chr(len(protocol_name)) + protocol_name +
+ FLAGS + self.encoder.download_id)
+ if self.id is not None:
+ connection.write(self.encoder.my_id)
+
+ def close(self):
+ if not self.closed:
+ self.connection.close()
+ self._sever()
+
+ def send_interested(self):
+ self._send_message(INTERESTED)
+
+ def send_not_interested(self):
+ self._send_message(NOT_INTERESTED)
+
+ def send_choke(self):
+ if self._partial_message is None:
+ self._send_message(CHOKE)
+ self.choke_sent = True
+ self.upload.sent_choke()
+
+ def send_unchoke(self):
+ if self._partial_message is None:
+ self._send_message(UNCHOKE)
+ self.choke_sent = False
+
+ def send_port(self, port):
+ self._send_message(PORT+pack('!H', port))
+
+ def send_request(self, index, begin, length):
+ self._send_message(pack("!ciii", REQUEST, index, begin, length))
+
+ def send_cancel(self, index, begin, length):
+ self._send_message(pack("!ciii", CANCEL,index, begin, length))
+
+ def send_bitfield(self, bitfield):
+ self._send_message(BITFIELD + bitfield)
+
+ def send_have(self, index):
+ self._send_message(pack("!ci", HAVE, index))
+
+ def send_keepalive(self):
+ self._send_message('')
+
+ def send_partial(self, bytes):
+ if self.closed:
+ return 0
+ if self._partial_message is None:
+ s = self.upload.get_upload_chunk()
+ if s is None:
+ return 0
+ index, begin, piece = s
+ self._partial_message = pack("!icii%ss" % len(piece), len(piece) + 9, PIECE,
+ index, begin, piece)
+ if bytes < len(self._partial_message):
+ self.upload.update_rate(bytes)
+ self.connection.write(buffer(self._partial_message, 0, bytes))
+ self._partial_message = buffer(self._partial_message, bytes)
+ return bytes
+
+ queue = [str(self._partial_message)]
+ self._partial_message = None
+ if self.choke_sent != self.upload.choked:
+ if self.upload.choked:
+ self._outqueue.append(pack("!ic", 1, CHOKE))
+ self.upload.sent_choke()
+ else:
+ self._outqueue.append(pack("!ic", 1, UNCHOKE))
+ self.choke_sent = self.upload.choked
+ queue.extend(self._outqueue)
+ self._outqueue = []
+ queue = ''.join(queue)
+ self.upload.update_rate(len(queue))
+ self.connection.write(queue)
+ return len(queue)
+
+ # yields the number of bytes it wants next, gets those in self._message
+ def _read_messages(self):
+ yield 1 # header length
+ if ord(self._message) != len(protocol_name):
+ return
+
+ yield len(protocol_name)
+ if self._message != protocol_name:
+ return
+
+ yield 8 # reserved
+ # dht is on last reserved byte
+ if ord(self._message[7]) & DHT:
+ self.uses_dht = True
+
+ yield 20 # download id
+ if self.encoder.download_id is None: # incoming connection
+ # modifies self.encoder if successful
+ self.encoder.select_torrent(self, self._message)
+ if self.encoder.download_id is None:
+ return
+ elif self._message != self.encoder.download_id:
+ return
+ if not self.locally_initiated:
+ self.connection.write(chr(len(protocol_name)) + protocol_name +
+ FLAGS + self.encoder.download_id + self.encoder.my_id)
+
+ yield 20 # peer id
+ if not self.id:
+ self.id = self._message
+ if self.id == self.encoder.my_id:
+ return
+ for v in self.encoder.connections.itervalues():
+ if v is not self:
+ if v.id == self.id:
+ return
+ if self.encoder.config['one_connection_per_ip'] and \
+ v.ip == self.ip:
+ return
+ if self.locally_initiated:
+ self.connection.write(self.encoder.my_id)
+ else:
+ self.encoder.everinc = True
+ else:
+ if self._message != self.id:
+ return
+ self.complete = True
+ self.encoder.connection_completed(self)
+
+ while True:
+ yield 4 # message length
+ l = toint(self._message)
+ if l > self.encoder.config['max_message_length']:
+ return
+ if l > 0:
+ yield l
+ self._got_message(self._message)
+
+ def _got_message(self, message):
+ t = message[0]
+ if t == BITFIELD and self.got_anything:
+ self.close()
+ return
+ self.got_anything = True
+ if (t in [CHOKE, UNCHOKE, INTERESTED, NOT_INTERESTED] and
+ len(message) != 1):
+ self.close()
+ return
+ if t == CHOKE:
+ self.download.got_choke()
+ elif t == UNCHOKE:
+ self.download.got_unchoke()
+ elif t == INTERESTED:
+ self.upload.got_interested()
+ elif t == NOT_INTERESTED:
+ self.upload.got_not_interested()
+ elif t == HAVE:
+ if len(message) != 5:
+ self.close()
+ return
+ i = unpack("!xi", message)[0]
+ if i >= self.encoder.numpieces:
+ self.close()
+ return
+ self.download.got_have(i)
+ elif t == BITFIELD:
+ try:
+ b = Bitfield(self.encoder.numpieces, message[1:])
+ except ValueError:
+ self.close()
+ return
+ self.download.got_have_bitfield(b)
+ elif t == REQUEST:
+ if len(message) != 13:
+ self.close()
+ return
+ i, a, b = unpack("!xiii", message)
+ if i >= self.encoder.numpieces:
+ self.close()
+ return
+ self.upload.got_request(i, a, b)
+ elif t == CANCEL:
+ if len(message) != 13:
+ self.close()
+ return
+ i, a, b = unpack("!xiii", message)
+ if i >= self.encoder.numpieces:
+ self.close()
+ return
+ self.upload.got_cancel(i, a, b)
+ elif t == PIECE:
+ if len(message) <= 9:
+ self.close()
+ return
+ n = len(message) - 9
+ i, a, b = unpack("!xii%ss" % n, message)
+ if i >= self.encoder.numpieces:
+ self.close()
+ return
+ if self.download.got_piece(i, a, b):
+ for co in self.encoder.complete_connections:
+ co.send_have(i)
+ elif t == PORT:
+ if len(message) != 3:
+ self.close()
+ return
+ self.dht_port = unpack('!H', message[1:3])[0]
+ self.encoder.got_port(self)
+ else:
+ self.close()
+
+ def _sever(self):
+ self.closed = True
+ self._reader = None
+ del self.encoder.connections[self.connection]
+ self.connection = None
+ self.encoder.replace_connection()
+ if self.complete:
+ del self.encoder.complete_connections[self]
+ self.download.disconnected()
+ self.encoder.choker.connection_lost(self)
+ self.upload = self.download = None
+
+ def _send_message(self, message):
+ s = tobinary(len(message)) + message
+ if self._partial_message is not None:
+ self._outqueue.append(s)
+ else:
+ self.connection.write(s)
+
+ def data_came_in(self, conn, s):
+ while True:
+ if self.closed:
+ return
+ i = self._next_len - self._buffer_len
+ if i > len(s):
+ self._buffer.append(s)
+ self._buffer_len += len(s)
+ return
+ m = s[:i]
+ if self._buffer_len > 0:
+ self._buffer.append(m)
+ m = ''.join(self._buffer)
+ self._buffer = []
+ self._buffer_len = 0
+ s = s[i:]
+ self._message = m
+ try:
+ self._next_len = self._reader.next()
+ except StopIteration:
+ self.close()
+ return
+
+ def connection_lost(self, conn):
+ if self.connection is None:
+ assert self.closed
+ else:
+ assert conn is self.connection
+ self._sever()
+
+ def connection_flushed(self, connection):
+ if self.complete and self.next_upload is None and (self._partial_message is not None
+ or (self.upload and self.upload.buffer)):
+ self.encoder.ratelimiter.queue(self, self.encoder.context.rlgroup)
diff --git a/BitTorrent/ConvertedMetainfo.py b/BitTorrent/ConvertedMetainfo.py
new file mode 100644
index 0000000..49eda7e
--- /dev/null
+++ b/BitTorrent/ConvertedMetainfo.py
@@ -0,0 +1,288 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Uoti Urpala
+
+# required for Python 2.2
+from __future__ import generators
+
+import os
+import sys
+from sha import sha
+
+from BitTorrent.obsoletepythonsupport import *
+
+from BitTorrent.bencode import bencode
+from BitTorrent import btformats
+from BitTorrent import BTFailure, WARNING, ERROR
+
+
+WINDOWS_UNSUPPORTED_CHARS ='"*/:<>?\|'
+windows_translate = [chr(i) for i in range(256)]
+for x in WINDOWS_UNSUPPORTED_CHARS:
+ windows_translate[ord(x)] = '-'
+windows_translate = ''.join(windows_translate)
+
+noncharacter_translate = {}
+for i in range(0xD800, 0xE000):
+ noncharacter_translate[i] = ord('-')
+for i in range(0xFDD0, 0xFDF0):
+ noncharacter_translate[i] = ord('-')
+for i in (0xFFFE, 0xFFFF):
+ noncharacter_translate[i] = ord('-')
+
+del x, i
+
+def set_filesystem_encoding(encoding, errorfunc):
+ global filesystem_encoding
+ filesystem_encoding = 'ascii'
+ if encoding == '':
+ try:
+ sys.getfilesystemencoding
+ except AttributeError:
+ errorfunc(WARNING,
+ _("This seems to be an old Python version which "
+ "does not support detecting the filesystem "
+ "encoding. Assuming 'ascii'."))
+ return
+ encoding = sys.getfilesystemencoding()
+ if encoding is None:
+ errorfunc(WARNING,
+ _("Python failed to autodetect filesystem encoding. "
+ "Using 'ascii' instead."))
+ return
+ try:
+ 'a1'.decode(encoding)
+ except:
+ errorfunc(ERROR,
+ _("Filesystem encoding '%s' is not supported. "
+ "Using 'ascii' instead.") % encoding)
+ return
+ filesystem_encoding = encoding
+
+
+def generate_names(name, is_dir):
+ if is_dir:
+ prefix = name + '.'
+ suffix = ''
+ else:
+ pos = name.rfind('.')
+ if pos == -1:
+ pos = len(name)
+ prefix = name[:pos] + '.'
+ suffix = name[pos:]
+ i = 0
+ while True:
+ yield prefix + str(i) + suffix
+ i += 1
+
+
+class ConvertedMetainfo(object):
+
+ def __init__(self, metainfo):
+ self.bad_torrent_wrongfield = False
+ self.bad_torrent_unsolvable = False
+ self.bad_torrent_noncharacter = False
+ self.bad_conversion = False
+ self.bad_windows = False
+ self.bad_path = False
+ self.reported_errors = False
+ self.is_batch = False
+ self.orig_files = None
+ self.files_fs = None
+ self.total_bytes = 0
+ self.sizes = []
+ self.comment = None
+
+ btformats.check_message(metainfo, check_paths=False)
+ info = metainfo['info']
+ if info.has_key('length'):
+ self.total_bytes = info['length']
+ self.sizes.append(self.total_bytes)
+ else:
+ self.is_batch = True
+ r = []
+ self.orig_files = []
+ self.sizes = []
+ i = 0
+ for f in info['files']:
+ l = f['length']
+ self.total_bytes += l
+ self.sizes.append(l)
+ path = self._get_attr_utf8(f, 'path')
+ for x in path:
+ if not btformats.allowed_path_re.match(x):
+ if l > 0:
+ raise BTFailure(_("Bad file path component: ")+x)
+ # BitComet makes bad .torrent files with empty
+ # filename part
+ self.bad_path = True
+ break
+ else:
+ p = []
+ for x in path:
+ p.append((self._enforce_utf8(x), x))
+ path = p
+ self.orig_files.append('/'.join([x[0] for x in path]))
+ k = []
+ for u,o in path:
+ tf2 = self._to_fs_2(u)
+ k.append((tf2, u, o))
+ r.append((k,i))
+ i += 1
+ # If two or more file/subdirectory names in the same directory
+ # would map to the same name after encoding conversions + Windows
+ # workarounds, change them. Files are changed as
+ # 'a.b.c'->'a.b.0.c', 'a.b.1.c' etc, directories or files without
+ # '.' as 'a'->'a.0', 'a.1' etc. If one of the multiple original
+ # names was a "clean" conversion, that one is always unchanged
+ # and the rest are adjusted.
+ r.sort()
+ self.files_fs = [None] * len(r)
+ prev = [None]
+ res = []
+ stack = [{}]
+ for x in r:
+ j = 0
+ x, i = x
+ while x[j] == prev[j]:
+ j += 1
+ del res[j:]
+ del stack[j+1:]
+ name = x[j][0][1]
+ if name in stack[-1]:
+ for name in generate_names(x[j][1], j != len(x) - 1):
+ name = self._to_fs(name)
+ if name not in stack[-1]:
+ break
+ stack[-1][name] = None
+ res.append(name)
+ for j in range(j + 1, len(x)):
+ name = x[j][0][1]
+ stack.append({name: None})
+ res.append(name)
+ self.files_fs[i] = os.path.join(*res)
+ prev = x
+
+ self.name = self._get_field_utf8(info, 'name')
+ self.name_fs = self._to_fs(self.name)
+ self.piece_length = info['piece length']
+ self.is_trackerless = False
+ if metainfo.has_key('announce'):
+ self.announce = metainfo['announce']
+ elif metainfo.has_key('nodes'):
+ self.is_trackerless = True
+ self.nodes = metainfo['nodes']
+
+ if metainfo.has_key('comment'):
+ self.comment = metainfo['comment']
+
+ self.hashes = [info['pieces'][x:x+20] for x in xrange(0,
+ len(info['pieces']), 20)]
+ self.infohash = sha(bencode(info)).digest()
+
+ def show_encoding_errors(self, errorfunc):
+ self.reported_errors = True
+ if self.bad_torrent_unsolvable:
+ errorfunc(ERROR,
+ _("This .torrent file has been created with a broken "
+ "tool and has incorrectly encoded filenames. Some or "
+ "all of the filenames may appear different from what "
+ "the creator of the .torrent file intended."))
+ elif self.bad_torrent_noncharacter:
+ errorfunc(ERROR,
+ _("This .torrent file has been created with a broken "
+ "tool and has bad character values that do not "
+ "correspond to any real character. Some or all of the "
+ "filenames may appear different from what the creator "
+ "of the .torrent file intended."))
+ elif self.bad_torrent_wrongfield:
+ errorfunc(ERROR,
+ _("This .torrent file has been created with a broken "
+ "tool and has incorrectly encoded filenames. The "
+ "names used may still be correct."))
+ elif self.bad_conversion:
+ errorfunc(WARNING,
+ _('The character set used on the local filesystem ("%s") '
+ 'cannot represent all characters used in the '
+ 'filename(s) of this torrent. Filenames have been '
+ 'changed from the original.') % filesystem_encoding)
+ elif self.bad_windows:
+ errorfunc(WARNING,
+ _("The Windows filesystem cannot handle some "
+ "characters used in the filename(s) of this torrent. "
+ "Filenames have been changed from the original."))
+ elif self.bad_path:
+ errorfunc(WARNING,
+ _("This .torrent file has been created with a broken "
+ "tool and has at least 1 file with an invalid file "
+ "or directory name. However since all such files "
+ "were marked as having length 0 those files are "
+ "just ignored."))
+
+ # At least BitComet seems to make bad .torrent files that have
+ # fields in an arbitrary encoding but separate 'field.utf-8' attributes
+ def _get_attr_utf8(self, d, attrib):
+ v = d.get(attrib + '.utf-8')
+ if v is not None:
+ if v != d[attrib]:
+ self.bad_torrent_wrongfield = True
+ else:
+ v = d[attrib]
+ return v
+
+ def _enforce_utf8(self, s):
+ try:
+ s = s.decode('utf-8')
+ except:
+ self.bad_torrent_unsolvable = True
+ s = s.decode('utf-8', 'replace')
+ t = s.translate(noncharacter_translate)
+ if t != s:
+ self.bad_torrent_noncharacter = True
+ return t.encode('utf-8')
+
+ def _get_field_utf8(self, d, attrib):
+ r = self._get_attr_utf8(d, attrib)
+ return self._enforce_utf8(r)
+
+ def _fix_windows(self, name, t=windows_translate):
+ bad = False
+ r = name.translate(t)
+ # for some reason name cannot end with '.' or space
+ if r[-1] in '. ':
+ r = r + '-'
+ if r != name:
+ self.bad_windows = True
+ bad = True
+ return (r, bad)
+
+ def _to_fs(self, name):
+ return self._to_fs_2(name)[1]
+
+ def _to_fs_2(self, name):
+ bad = False
+ if sys.platform.startswith('win'):
+ name, bad = self._fix_windows(name)
+ name = name.decode('utf-8')
+ try:
+ r = name.encode(filesystem_encoding)
+ except:
+ self.bad_conversion = True
+ bad = True
+ r = name.encode(filesystem_encoding, 'replace')
+
+ if sys.platform.startswith('win'):
+ # encoding to mbcs with or without 'replace' will make the
+ # name unsupported by windows again because it adds random
+ # '?' characters which are invalid windows filesystem
+ # character
+ r, bad = self._fix_windows(r)
+ return (bad, r)
diff --git a/BitTorrent/CurrentRateMeasure.py b/BitTorrent/CurrentRateMeasure.py
new file mode 100644
index 0000000..3dd940f
--- /dev/null
+++ b/BitTorrent/CurrentRateMeasure.py
@@ -0,0 +1,48 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from BitTorrent.platform import bttime
+
+
+class Measure(object):
+
+ def __init__(self, max_rate_period, fudge=5):
+ self.max_rate_period = max_rate_period
+ self.ratesince = bttime() - fudge
+ self.last = self.ratesince
+ self.rate = 0.0
+ self.total = 0
+
+ def update_rate(self, amount):
+ self.total += amount
+ t = bttime()
+ self.rate = (self.rate * (self.last - self.ratesince) +
+ amount) / (t - self.ratesince)
+ self.last = t
+ if self.ratesince < t - self.max_rate_period:
+ self.ratesince = t - self.max_rate_period
+
+ def get_rate(self):
+ self.update_rate(0)
+ return self.rate
+
+ def get_rate_noupdate(self):
+ return self.rate
+
+ def time_until_rate(self, newrate):
+ if self.rate <= newrate:
+ return 0
+ t = bttime() - self.ratesince
+ return ((self.rate * t) / newrate) - t
+
+ def get_total(self):
+ return self.total
diff --git a/BitTorrent/Desktop.py b/BitTorrent/Desktop.py
new file mode 100644
index 0000000..b724811
--- /dev/null
+++ b/BitTorrent/Desktop.py
@@ -0,0 +1,33 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# written by Matt Chisholm
+
+import os
+import sys
+
+from BitTorrent.platform import get_home_dir, get_shell_dir
+if os.name == 'nt':
+ from win32com.shell import shellcon
+
+desktop = None
+
+if os.name == 'nt':
+ desktop = get_shell_dir(shellcon.CSIDL_DESKTOPDIRECTORY)
+else:
+ homedir = get_home_dir()
+ if homedir == None :
+ desktop = '/tmp/'
+ else:
+ desktop = homedir
+ if os.name in ('mac', 'posix'):
+ tmp_desktop = os.path.join(homedir, 'Desktop')
+ if os.access(tmp_desktop, os.R_OK|os.W_OK):
+ desktop = tmp_desktop + os.sep
diff --git a/BitTorrent/Downloader.py b/BitTorrent/Downloader.py
new file mode 100644
index 0000000..accb332
--- /dev/null
+++ b/BitTorrent/Downloader.py
@@ -0,0 +1,363 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala
+
+from random import shuffle
+
+from BitTorrent.platform import bttime
+from BitTorrent.CurrentRateMeasure import Measure
+from BitTorrent.bitfield import Bitfield
+
+
+class PerIPStats(object):
+
+ def __init__(self):
+ self.numgood = 0
+ self.bad = {}
+ self.numconnections = 0
+ self.lastdownload = None
+ self.peerid = None
+
+
+class BadDataGuard(object):
+
+ def __init__(self, download):
+ self.download = download
+ self.ip = download.connection.ip
+ self.downloader = download.downloader
+ self.stats = self.downloader.perip[self.ip]
+ self.lastindex = None
+
+ def bad(self, index, bump = False):
+ self.stats.bad.setdefault(index, 0)
+ self.stats.bad[index] += 1
+ if self.ip not in self.downloader.bad_peers:
+ self.downloader.bad_peers[self.ip] = (False, self.stats)
+ if self.download is not None:
+ self.downloader.kick(self.download)
+ self.download = None
+ elif len(self.stats.bad) > 1 and self.stats.numconnections == 1 and \
+ self.stats.lastdownload is not None:
+ # kick new connection from same IP if previous one sent bad data,
+ # mainly to give the algorithm time to find other bad pieces
+ # in case the peer is sending a lot of bad data
+ self.downloader.kick(self.stats.lastdownload)
+ if len(self.stats.bad) >= 3 and len(self.stats.bad) > \
+ self.stats.numgood // 30:
+ self.downloader.ban(self.ip)
+ elif bump:
+ self.downloader.picker.bump(index)
+
+ def good(self, index):
+ # lastindex is a hack to only increase numgood for by one for each good
+ # piece, however many chunks came from the connection(s) from this IP
+ if index != self.lastindex:
+ self.stats.numgood += 1
+ self.lastindex = index
+
+
+class SingleDownload(object):
+
+ def __init__(self, downloader, connection):
+ self.downloader = downloader
+ self.connection = connection
+ self.choked = True
+ self.interested = False
+ self.active_requests = []
+ self.measure = Measure(downloader.config['max_rate_period'])
+ self.peermeasure = Measure(max(downloader.storage.piece_size / 10000,
+ 20))
+ self.have = Bitfield(downloader.numpieces)
+ self.last = 0
+ self.example_interest = None
+ self.backlog = 2
+ self.guard = BadDataGuard(self)
+
+ def _backlog(self):
+ backlog = 2 + int(4 * self.measure.get_rate() /
+ self.downloader.chunksize)
+ if backlog > 50:
+ backlog = max(50, int(.075 * backlog))
+ self.backlog = backlog
+ return backlog
+
+ def disconnected(self):
+ self.downloader.lost_peer(self)
+ for i in xrange(len(self.have)):
+ if self.have[i]:
+ self.downloader.picker.lost_have(i)
+ self._letgo()
+ self.guard.download = None
+
+ def _letgo(self):
+ if not self.active_requests:
+ return
+ if self.downloader.storage.endgame:
+ self.active_requests = []
+ return
+ lost = []
+ for index, begin, length in self.active_requests:
+ self.downloader.storage.request_lost(index, begin, length)
+ if index not in lost:
+ lost.append(index)
+ self.active_requests = []
+ ds = [d for d in self.downloader.downloads if not d.choked]
+ shuffle(ds)
+ for d in ds:
+ d._request_more(lost)
+ for d in self.downloader.downloads:
+ if d.choked and not d.interested:
+ for l in lost:
+ if d.have[l] and self.downloader.storage.do_I_have_requests(l):
+ d.interested = True
+ d.connection.send_interested()
+ break
+
+ def got_choke(self):
+ if not self.choked:
+ self.choked = True
+ self._letgo()
+
+ def got_unchoke(self):
+ if self.choked:
+ self.choked = False
+ if self.interested:
+ self._request_more()
+
+ def got_piece(self, index, begin, piece):
+ try:
+ self.active_requests.remove((index, begin, len(piece)))
+ except ValueError:
+ self.downloader.discarded_bytes += len(piece)
+ return False
+ if self.downloader.storage.endgame:
+ self.downloader.all_requests.remove((index, begin, len(piece)))
+ self.last = bttime()
+ self.measure.update_rate(len(piece))
+ self.downloader.measurefunc(len(piece))
+ self.downloader.downmeasure.update_rate(len(piece))
+ if not self.downloader.storage.piece_came_in(index, begin, piece,
+ self.guard):
+ if self.downloader.storage.endgame:
+ while self.downloader.storage.do_I_have_requests(index):
+ nb, nl = self.downloader.storage.new_request(index)
+ self.downloader.all_requests.append((index, nb, nl))
+ for d in self.downloader.downloads:
+ d.fix_download_endgame()
+ return False
+ ds = [d for d in self.downloader.downloads if not d.choked]
+ shuffle(ds)
+ for d in ds:
+ d._request_more([index])
+ return False
+ if self.downloader.storage.do_I_have(index):
+ self.downloader.picker.complete(index)
+ if self.downloader.storage.endgame:
+ for d in self.downloader.downloads:
+ if d is not self and d.interested:
+ if d.choked:
+ d.fix_download_endgame()
+ else:
+ try:
+ d.active_requests.remove((index, begin, len(piece)))
+ except ValueError:
+ continue
+ d.connection.send_cancel(index, begin, len(piece))
+ d.fix_download_endgame()
+ self._request_more()
+ if self.downloader.picker.am_I_complete():
+ for d in [i for i in self.downloader.downloads if i.have.numfalse == 0]:
+ d.connection.close()
+ return self.downloader.storage.do_I_have(index)
+
+ def _want(self, index):
+ return self.have[index] and self.downloader.storage.do_I_have_requests(index)
+
+ def _request_more(self, indices = None):
+ assert not self.choked
+ if len(self.active_requests) >= self._backlog():
+ return
+ if self.downloader.storage.endgame:
+ self.fix_download_endgame()
+ return
+ lost_interests = []
+ while len(self.active_requests) < self.backlog:
+ if indices is None:
+ interest = self.downloader.picker.next(self._want, self.have.numfalse == 0)
+ else:
+ interest = None
+ for i in indices:
+ if self.have[i] and self.downloader.storage.do_I_have_requests(i):
+ interest = i
+ break
+ if interest is None:
+ break
+ if not self.interested:
+ self.interested = True
+ self.connection.send_interested()
+ self.example_interest = interest
+ self.downloader.picker.requested(interest, self.have.numfalse == 0)
+ while len(self.active_requests) < (self.backlog-2) * 5 + 2:
+ begin, length = self.downloader.storage.new_request(interest)
+ self.active_requests.append((interest, begin, length))
+ self.connection.send_request(interest, begin, length)
+ if not self.downloader.storage.do_I_have_requests(interest):
+ lost_interests.append(interest)
+ break
+ if not self.active_requests and self.interested:
+ self.interested = False
+ self.connection.send_not_interested()
+ if lost_interests:
+ for d in self.downloader.downloads:
+ if d.active_requests or not d.interested:
+ continue
+ if d.example_interest is not None and self.downloader.storage.do_I_have_requests(d.example_interest):
+ continue
+ for lost in lost_interests:
+ if d.have[lost]:
+ break
+ else:
+ continue
+ interest = self.downloader.picker.next(d._want, d.have.numfalse == 0)
+ if interest is None:
+ d.interested = False
+ d.connection.send_not_interested()
+ else:
+ d.example_interest = interest
+ if self.downloader.storage.endgame:
+ self.downloader.all_requests = []
+ for d in self.downloader.downloads:
+ self.downloader.all_requests.extend(d.active_requests)
+ for d in self.downloader.downloads:
+ d.fix_download_endgame()
+
+ def fix_download_endgame(self):
+ want = [a for a in self.downloader.all_requests if self.have[a[0]] and a not in self.active_requests]
+ if self.interested and not self.active_requests and not want:
+ self.interested = False
+ self.connection.send_not_interested()
+ return
+ if not self.interested and want:
+ self.interested = True
+ self.connection.send_interested()
+ if self.choked or len(self.active_requests) >= self._backlog():
+ return
+ shuffle(want)
+ del want[self.backlog - len(self.active_requests):]
+ self.active_requests.extend(want)
+ for piece, begin, length in want:
+ self.connection.send_request(piece, begin, length)
+
+ def got_have(self, index):
+ if self.have[index]:
+ return
+ if index == self.downloader.numpieces-1:
+ self.peermeasure.update_rate(self.downloader.storage.total_length-
+ (self.downloader.numpieces-1)*self.downloader.storage.piece_size)
+ else:
+ self.peermeasure.update_rate(self.downloader.storage.piece_size)
+ self.have[index] = True
+ self.downloader.picker.got_have(index)
+ if self.downloader.picker.am_I_complete() and self.have.numfalse == 0:
+ self.connection.close()
+ return
+ if self.downloader.storage.endgame:
+ self.fix_download_endgame()
+ elif self.downloader.storage.do_I_have_requests(index):
+ if not self.choked:
+ self._request_more([index])
+ else:
+ if not self.interested:
+ self.interested = True
+ self.connection.send_interested()
+
+ def got_have_bitfield(self, have):
+ if self.downloader.picker.am_I_complete() and have.numfalse == 0:
+ self.connection.close()
+ return
+ self.have = have
+ for i in xrange(len(self.have)):
+ if self.have[i]:
+ self.downloader.picker.got_have(i)
+ if self.downloader.storage.endgame:
+ for piece, begin, length in self.downloader.all_requests:
+ if self.have[piece]:
+ self.interested = True
+ self.connection.send_interested()
+ return
+ for i in xrange(len(self.have)):
+ if self.have[i] and self.downloader.storage.do_I_have_requests(i):
+ self.interested = True
+ self.connection.send_interested()
+ return
+
+ def get_rate(self):
+ return self.measure.get_rate()
+
+ def is_snubbed(self):
+ return bttime() - self.last > self.downloader.snub_time
+
+
+class Downloader(object):
+
+ def __init__(self, config, storage, picker, numpieces, downmeasure,
+ measurefunc, kickfunc, banfunc):
+ self.config = config
+ self.storage = storage
+ self.picker = picker
+ self.chunksize = config['download_slice_size']
+ self.downmeasure = downmeasure
+ self.numpieces = numpieces
+ self.snub_time = config['snub_time']
+ self.measurefunc = measurefunc
+ self.kickfunc = kickfunc
+ self.banfunc = banfunc
+ self.downloads = []
+ self.perip = {}
+ self.bad_peers = {}
+ self.discarded_bytes = 0
+
+ def make_download(self, connection):
+ ip = connection.ip
+ perip = self.perip.get(ip)
+ if perip is None:
+ perip = PerIPStats()
+ self.perip[ip] = perip
+ perip.numconnections += 1
+ d = SingleDownload(self, connection)
+ perip.lastdownload = d
+ perip.peerid = connection.id
+ self.downloads.append(d)
+ return d
+
+ def lost_peer(self, download):
+ self.downloads.remove(download)
+ ip = download.connection.ip
+ self.perip[ip].numconnections -= 1
+ if self.perip[ip].lastdownload == download:
+ self.perip[ip].lastdownload = None
+
+ def kick(self, download):
+ if not self.config['retaliate_to_garbled_data']:
+ return
+ ip = download.connection.ip
+ peerid = download.connection.id
+ # kickfunc will schedule connection.close() to be executed later; we
+ # might now be inside RawServer event loop with events from that
+ # connection already queued, and trying to handle them after doing
+ # close() now could cause problems.
+ self.kickfunc(download.connection)
+
+ def ban(self, ip):
+ if not self.config['retaliate_to_garbled_data']:
+ return
+ self.banfunc(ip)
+ self.bad_peers[ip] = (True, self.perip[ip])
diff --git a/BitTorrent/DownloaderFeedback.py b/BitTorrent/DownloaderFeedback.py
new file mode 100644
index 0000000..6c16c90
--- /dev/null
+++ b/BitTorrent/DownloaderFeedback.py
@@ -0,0 +1,139 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala
+
+from __future__ import division
+
+
+class DownloaderFeedback(object):
+
+ def __init__(self, choker, upfunc, upfunc2, downfunc, uptotal, downtotal,
+ remainingfunc, leftfunc, file_length, finflag, downloader,
+ files, ever_got_incoming, rerequester):
+ self.downloader = downloader
+ self.picker = downloader.picker
+ self.storage = downloader.storage
+ self.choker = choker
+ self.upfunc = upfunc
+ self.upfunc2 = upfunc2
+ self.downfunc = downfunc
+ self.uptotal = uptotal
+ self.downtotal = downtotal
+ self.remainingfunc = remainingfunc
+ self.leftfunc = leftfunc
+ self.file_length = file_length
+ self.finflag = finflag
+ self.files = files
+ self.ever_got_incoming = ever_got_incoming
+ self.rerequester = rerequester
+ self.lastids = []
+
+ def _rotate(self):
+ cs = self.choker.connections
+ for peerid in self.lastids:
+ for i in xrange(len(cs)):
+ if cs[i].id == peerid:
+ return cs[i:] + cs[:i]
+ return cs
+
+ def collect_spew(self):
+ l = [ ]
+ cs = self._rotate()
+ self.lastids = [c.id for c in cs]
+ for c in cs:
+ rec = {}
+ rec['id'] = c.id
+ rec["ip"] = c.ip
+ rec["is_optimistic_unchoke"] = (c is self.choker.connections[0])
+ if c.locally_initiated:
+ rec["initiation"] = "L"
+ else:
+ rec["initiation"] = "R"
+ u = c.upload
+ rec["upload"] = (u.measure.get_total(), int(u.measure.get_rate()),
+ u.interested, u.choked)
+
+ d = c.download
+ rec["download"] = (d.measure.get_total(),int(d.measure.get_rate()),
+ d.interested, d.choked, d.is_snubbed())
+ rec['completed'] = 1 - d.have.numfalse / len(d.have)
+ rec['speed'] = d.connection.download.peermeasure.get_rate()
+ l.append(rec)
+ return l
+
+ def get_statistics(self, spewflag=False, fileflag=False):
+ status = {}
+ numSeeds = 0
+ numPeers = 0
+ for d in self.downloader.downloads:
+ if d.have.numfalse == 0:
+ numSeeds += 1
+ else:
+ numPeers += 1
+ status['numSeeds'] = numSeeds
+ status['numPeers'] = numPeers
+ status['trackerSeeds'] = self.rerequester.tracker_num_seeds
+ status['trackerPeers'] = self.rerequester.tracker_num_peers
+ status['upRate'] = self.upfunc()
+ status['upRate2'] = self.upfunc2()
+ status['upTotal'] = self.uptotal()
+ status['ever_got_incoming'] = self.ever_got_incoming()
+ missingPieces = 0
+ numCopyList = []
+ numCopies = 0
+ for i in self.picker.crosscount:
+ missingPieces += i
+ if missingPieces == 0:
+ numCopies += 1
+ else:
+ fraction = 1 - missingPieces / self.picker.numpieces
+ numCopyList.append(fraction)
+ if fraction == 0 or len(numCopyList) >= 3:
+ break
+ numCopies -= numSeeds
+ if self.picker.numgot == self.picker.numpieces:
+ numCopies -= 1
+ status['numCopies'] = numCopies
+ status['numCopyList'] = numCopyList
+ status['discarded'] = self.downloader.discarded_bytes
+ status['storage_numcomplete'] = self.storage.stat_numfound + \
+ self.storage.stat_numdownloaded
+ status['storage_dirty'] = len(self.storage.stat_dirty)
+ status['storage_active'] = len(self.storage.stat_active)
+ status['storage_new'] = len(self.storage.stat_new)
+ status['storage_numflunked'] = self.storage.stat_numflunked
+
+ if spewflag:
+ status['spew'] = self.collect_spew()
+ status['bad_peers'] = self.downloader.bad_peers
+ if fileflag:
+ undl = self.storage.storage.undownloaded
+ unal = self.storage.storage.unallocated
+ status['files_left'] = [undl[fname] for fname in self.files]
+ status['files_allocated'] = [not unal[fn] for fn in self.files]
+ if self.finflag.isSet():
+ status['downRate'] = 0
+ status['downTotal'] = self.downtotal()
+ status['fractionDone'] = 1
+ return status
+ timeEst = self.remainingfunc()
+ status['timeEst'] = timeEst
+
+ if self.file_length > 0:
+ fractionDone = 1 - self.leftfunc() / self.file_length
+ else:
+ fractionDone = 1
+ status.update({
+ "fractionDone" : fractionDone,
+ "downRate" : self.downfunc(),
+ "downTotal" : self.downtotal()
+ })
+ return status
diff --git a/BitTorrent/Encoder.py b/BitTorrent/Encoder.py
new file mode 100644
index 0000000..a5bd6dc
--- /dev/null
+++ b/BitTorrent/Encoder.py
@@ -0,0 +1,286 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from socket import error as socketerror
+
+from BitTorrent import BTFailure
+from BitTorrent.RawServer_magic import Handler
+from BitTorrent.NatTraversal import UPNPError
+from BitTorrent.Connecter import Connection
+from BitTorrent.platform import is_frozen_exe
+from BitTorrent.ClientIdentifier import identify_client
+
+# header, reserved, download id, my id, [length, message]
+
+class InitialConnectionHandler(Handler):
+ def __init__(self, parent, id):
+ self.parent = parent
+ self.id = id
+ self.accept = True
+
+ def connection_started(self, s):
+
+ del self.parent.pending_connections[(s.ip, s.port)]
+
+ # prevents conenctions we no longer care about from being accepted
+ if not self.accept:
+ return
+
+ con = Connection(self.parent, s, self.id, True)
+ self.parent.connections[s] = con
+
+ # it might not be obvious why this is here.
+ # if the pending queue filled and put the remaining connections
+ # into the spare list, this will push more connections in to pending
+ self.parent.replace_connection()
+
+ def connection_failed(self, addr, exception):
+ del self.parent.pending_connections[addr]
+
+ if not self.accept:
+ # we don't need to rotate the spares with replace_connection()
+ # if the Encoder object has stopped all connections
+ return
+
+ self.parent.replace_connection()
+
+
+class Encoder(object):
+
+ def __init__(self, make_upload, downloader, choker, numpieces, ratelimiter,
+ rawserver, config, my_id, schedulefunc, download_id, context, addcontactfunc, reported_port):
+ self.make_upload = make_upload
+ self.downloader = downloader
+ self.choker = choker
+ self.numpieces = numpieces
+ self.ratelimiter = ratelimiter
+ self.rawserver = rawserver
+ self.my_id = my_id
+ self.config = config
+ self.schedulefunc = schedulefunc
+ self.download_id = download_id
+ self.context = context
+ self.addcontact = addcontactfunc
+ self.reported_port = reported_port
+ self.everinc = False
+
+ # submitted
+ self.pending_connections = {}
+ # transport connected
+ self.connections = {}
+ # protocol active
+ self.complete_connections = {}
+
+ self.spares = {}
+
+ self.banned = {}
+ schedulefunc(self.send_keepalives, config['keepalive_interval'])
+
+ def send_keepalives(self):
+ self.schedulefunc(self.send_keepalives,
+ self.config['keepalive_interval'])
+ for c in self.complete_connections:
+ c.send_keepalive()
+
+ # returns False if the connection has been pushed on to self.spares
+ # other filters and a successful connection return True
+ def start_connection(self, dns, id):
+ if dns[0] in self.banned:
+ return True
+ if id == self.my_id:
+ return True
+ for v in self.connections.values():
+ if id and v.id == id:
+ return True
+ if self.config['one_connection_per_ip'] and v.ip == dns[0]:
+ return True
+
+ #print "start", len(self.pending_connections), len(self.spares), len(self.connections)
+
+ total_outstanding = len(self.connections)
+ # it's possible the pending connections could eventually complete,
+ # so we have to account for those when enforcing max_initiate
+ total_outstanding += len(self.pending_connections)
+
+ if total_outstanding >= self.config['max_initiate']:
+ self.spares[dns] = 1
+ return False
+
+ # if these fail, I'm getting a very weird dns object
+ assert isinstance(dns, tuple)
+ assert isinstance(dns[0], str)
+ assert isinstance(dns[1], int)
+
+ # looks like we connect to the same peer several times in a row.
+ # we should probably stop doing that, but this prevents it from crashing
+ if dns in self.pending_connections:
+ # uncomment this if you want to debug the multi-connect problem
+ #print "Double Add on", dns
+ #traceback.print_stack()
+ return True
+
+ handler = InitialConnectionHandler(self, id)
+ self.pending_connections[dns] = handler
+ started = self.rawserver.async_start_connection(dns, handler, self.context)
+
+ if not started:
+ del self.pending_connections[dns]
+ self.spares[dns] = 1
+ return False
+
+ return True
+
+ def connection_completed(self, c):
+ self.complete_connections[c] = 1
+ c.upload = self.make_upload(c)
+ c.download = self.downloader.make_download(c)
+ self.choker.connection_made(c)
+ if c.uses_dht:
+ c.send_port(self.reported_port)
+
+ def got_port(self, c):
+ if self.addcontact and c.uses_dht and c.dht_port != None:
+ self.addcontact(c.connection.ip, c.dht_port)
+
+ def ever_got_incoming(self):
+ return self.everinc
+
+ def how_many_connections(self):
+ return len(self.complete_connections)
+
+ def replace_connection(self):
+ while self.spares:
+ started = self.start_connection(self.spares.popitem()[0], None)
+ if not started:
+ # start_connection decided to push this connection back on to
+ # self.spares because a limit was hit. break now or loop forever
+ break
+
+ def close_connections(self):
+ # drop connections which could be made after we're not interested
+ for c in self.pending_connections.itervalues():
+ c.accept = False
+
+ for c in self.connections.itervalues():
+ if not c.closed:
+ c.connection.close()
+ c.closed = True
+
+ def singleport_connection(self, listener, con):
+ if con.ip in self.banned:
+ return
+ m = self.config['max_allow_in']
+ if m and len(self.connections) >= m:
+ return
+ self.connections[con.connection] = con
+ del listener.connections[con.connection]
+ con.encoder = self
+ con.connection.context = self.context
+
+ def ban(self, ip):
+ self.banned[ip] = None
+
+
+class SingleportListener(Handler):
+
+ def __init__(self, rawserver, nattraverser):
+ self.rawserver = rawserver
+ self.nattraverser = nattraverser
+ self.port = 0
+ self.ports = {}
+ self.port_change_notification = None
+ self.torrents = {}
+ self.connections = {}
+ self.download_id = None
+
+ def _close(self, port):
+ serversocket = self.ports[port][0]
+ self.nattraverser.unregister_port(port, "TCP")
+ self.rawserver.stop_listening(serversocket)
+ serversocket.close()
+
+ def _check_close(self, port):
+ if not port or self.port == port or len(self.ports[port][1]) > 0:
+ return
+ self._close(port)
+ del self.ports[port]
+
+ def open_port(self, port, config):
+ if port in self.ports:
+ self.port = port
+ return
+ serversocket = self.rawserver.create_serversocket(
+ port, config['bind'], reuse=True, tos=config['peer_socket_tos'])
+ try:
+ d = self.nattraverser.register_port(port, port, "TCP", config['bind'])
+ d.addCallback(self._change_port)
+ except Exception, e:
+ # blanket, just incase - we don't want to interrupt things
+ # maybe we should log it, maybe not
+ #print "UPnP registration error", e
+ pass
+ self.rawserver.start_listening(serversocket, self)
+ oldport = self.port
+ self.port = port
+ self.ports[port] = [serversocket, {}]
+ self._check_close(oldport)
+
+ def _change_port(self, port):
+ if self.port == port:
+ return
+ [serversocket, callbacks] = self.ports[self.port]
+ self.ports[port] = [serversocket, callbacks]
+ del self.ports[self.port]
+ self.port = port
+ for callback in callbacks:
+ if callback:
+ callback(port)
+
+ def get_port(self, callback = None):
+ if self.port:
+ callbacks = self.ports[self.port][1]
+ if not callbacks.has_key(callback):
+ callbacks[callback] = 1
+ else:
+ callbacks[callback] += 1
+ return self.port
+
+ def release_port(self, port, callback = None):
+ callbacks = self.ports[port][1]
+ callbacks[callback] -= 1
+ if callbacks[callback] == 0:
+ del callbacks[callback]
+ self._check_close(port)
+
+ def close_sockets(self):
+ for port in self.ports.iterkeys():
+ self._close(port)
+
+ def add_torrent(self, infohash, encoder):
+ if infohash in self.torrents:
+ raise BTFailure(_("Can't start two separate instances of the same "
+ "torrent"))
+ self.torrents[infohash] = encoder
+
+ def remove_torrent(self, infohash):
+ del self.torrents[infohash]
+
+ def select_torrent(self, conn, infohash):
+ if infohash in self.torrents:
+ self.torrents[infohash].singleport_connection(self, conn)
+
+ def connection_made(self, connection):
+ con = Connection(self, connection, None, False)
+ self.connections[connection] = con
+
+ def replace_connection(self):
+ pass
diff --git a/BitTorrent/GUI.py b/BitTorrent/GUI.py
new file mode 100644
index 0000000..529811f
--- /dev/null
+++ b/BitTorrent/GUI.py
@@ -0,0 +1,679 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# written by Matt Chisholm
+
+from __future__ import division
+
+import gtk
+import pango
+import gobject
+import os
+import threading
+
+assert gtk.gtk_version >= (2, 6), _( "GTK %s or newer required") % '2.6'
+assert gtk.pygtk_version >= (2, 6), _("PyGTK %s or newer required") % '2.6'
+
+from BitTorrent import app_name, FAQ_URL, languages, language_names
+from BitTorrent.platform import image_root, read_language_file, write_language_file
+
+def lock_wrap(function, *args):
+ gtk.threads_enter()
+ function(*args)
+ gtk.threads_leave()
+
+def gtk_wrap(function, *args):
+ gobject.idle_add(lock_wrap, function, *args)
+
+SPACING = 8
+WINDOW_TITLE_LENGTH = 128 # do we need this?
+WINDOW_WIDTH = 600
+
+# get screen size from GTK
+d = gtk.gdk.display_get_default()
+s = d.get_default_screen()
+MAX_WINDOW_HEIGHT = s.get_height()
+MAX_WINDOW_WIDTH = s.get_width()
+if os.name == 'nt':
+ MAX_WINDOW_HEIGHT -= 32 # leave room for start bar (exact)
+ MAX_WINDOW_HEIGHT -= 32 # and window decorations (depends on windows theme)
+else:
+ MAX_WINDOW_HEIGHT -= 32 # leave room for window decorations (could be any size)
+
+
+MIN_MULTI_PANE_HEIGHT = 107
+
+BT_TARGET_TYPE = 0
+EXTERNAL_FILE_TYPE = 1
+EXTERNAL_STRING_TYPE = 2
+
+BT_TARGET = ("application/x-bittorrent" , gtk.TARGET_SAME_APP, BT_TARGET_TYPE )
+EXTERNAL_FILE = ("text/uri-list" , 0 , EXTERNAL_FILE_TYPE )
+
+#gtk(gdk actually) is totally unable to receive text drags
+#of any sort in windows because they're too lazy to use OLE.
+#this list is all the atoms I could possibly find so that
+#url dnd works on linux from any browser.
+EXTERNAL_TEXTPLAIN = ("text/plain" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_TEXT = ("TEXT" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_COMPOUND_TEXT = ("COMPOUND_TEXT" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_MOZILLA = ("text/x-moz-url" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_NETSCAPE = ("_NETSCAPE_URL" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_HTML = ("text/html" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_UNICODE = ("text/unicode" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_UTF8 = ("text/plain;charset=utf-8" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_UTF8_STRING = ("UTF8_STRING" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_STRING = ("STRING" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_OLE2_DND = ("OLE2_DND" , 0 , EXTERNAL_STRING_TYPE)
+EXTERNAL_RTF = ("Rich Text Format" , 0 , EXTERNAL_STRING_TYPE)
+#there should alse be text/plain;charset={current charset}
+
+TARGET_EXTERNAL = [EXTERNAL_FILE,
+ EXTERNAL_TEXTPLAIN,
+ EXTERNAL_TEXT,
+ EXTERNAL_COMPOUND_TEXT,
+ EXTERNAL_MOZILLA,
+ EXTERNAL_NETSCAPE,
+ EXTERNAL_HTML,
+ EXTERNAL_UNICODE,
+ EXTERNAL_UTF8,
+ EXTERNAL_UTF8_STRING,
+ EXTERNAL_STRING,
+ EXTERNAL_OLE2_DND,
+ EXTERNAL_RTF]
+
+TARGET_ALL = [BT_TARGET,
+ EXTERNAL_FILE,
+ EXTERNAL_TEXTPLAIN,
+ EXTERNAL_TEXT,
+ EXTERNAL_COMPOUND_TEXT,
+ EXTERNAL_MOZILLA,
+ EXTERNAL_NETSCAPE,
+ EXTERNAL_HTML,
+ EXTERNAL_UNICODE,
+ EXTERNAL_UTF8,
+ EXTERNAL_UTF8_STRING,
+ EXTERNAL_STRING,
+ EXTERNAL_OLE2_DND,
+ EXTERNAL_RTF]
+
+# a slightly hackish but very reliable way to get OS scrollbar width
+sw = gtk.ScrolledWindow()
+SCROLLBAR_WIDTH = sw.size_request()[0] - 48
+del sw
+
+def align(obj,x,y):
+ if type(obj) is gtk.Label:
+ obj.set_alignment(x,y)
+ return obj
+ else:
+ a = gtk.Alignment(x,y,0,0)
+ a.add(obj)
+ return a
+
+def halign(obj, amt):
+ return align(obj,amt,0.5)
+
+def lalign(obj):
+ return halign(obj,0)
+
+def ralign(obj):
+ return halign(obj,1)
+
+def valign(obj, amt):
+ return align(obj,0.5,amt)
+
+def malign(obj):
+ return valign(obj, 0.5)
+
+factory = gtk.IconFactory()
+
+# these don't seem to be documented anywhere:
+# ICON_SIZE_BUTTON = 20x20
+# ICON_SIZE_LARGE_TOOLBAR = 24x24
+
+for n in 'abort broken finished info pause paused play queued running remove status-running status-starting status-pre-natted status-natted status-stopped status-broken'.split():
+ fn = os.path.join(image_root, 'icons', 'default', ('%s.png'%n))
+ if os.access(fn, os.F_OK):
+ pixbuf = gtk.gdk.pixbuf_new_from_file(fn)
+ set = gtk.IconSet(pixbuf)
+ factory.add('bt-%s'%n, set)
+ # maybe we should load a default icon if none exists
+
+factory.add_default()
+
+def get_logo(size=32):
+ fn = os.path.join(image_root, 'logo', 'bittorrent_%d.png'%size)
+ logo = gtk.Image()
+ logo.set_from_file(fn)
+ return logo
+
+class Size(long):
+ """displays size in human-readable format"""
+ __slots__ = []
+ size_labels = ['','K','M','G','T','P','E','Z','Y']
+ radix = 2**10
+ def __new__(cls, value):
+ self = long.__new__(cls, value)
+ return self
+
+ def __init__(self, value):
+ long.__init__(self, value)
+
+ def __str__(self, precision=None):
+ if precision is None:
+ precision = 0
+ value = self
+ for unitname in self.size_labels:
+ if value < self.radix and precision < self.radix:
+ break
+ value /= self.radix
+ precision /= self.radix
+ if unitname and value < 10 and precision < 1:
+ return '%.1f %sB' % (value, unitname)
+ else:
+ return '%.0f %sB' % (value, unitname)
+
+
+class Rate(Size):
+ """displays rate in human-readable format"""
+ __slots__ = []
+ def __init__(self, value):
+ Size.__init__(self, value)
+
+ def __str__(self, precision=2**10):
+ return '%s/s'% Size.__str__(self, precision=precision)
+
+
+class Duration(float):
+ """displays duration in human-readable format"""
+ __slots__ = []
+ def __str__(self):
+ if self > 365 * 24 * 60 * 60:
+ return '?'
+ elif self >= 172800:
+ return _("%d days") % (self//86400) # 2 days or longer
+ elif self >= 86400:
+ return _("1 day %d hours") % ((self-86400)//3600) # 1-2 days
+ elif self >= 3600:
+ return _("%d:%02d hours") % (self//3600, (self%3600)//60) # 1 h - 1 day
+ elif self >= 60:
+ return _("%d:%02d minutes") % (self//60, self%60) # 1 minute to 1 hour
+ elif self >= 0:
+ return _("%d seconds") % int(self)
+ else:
+ return _("0 seconds")
+
+
+class FancyLabel(gtk.Label):
+ def __init__(self, label_string, *values):
+ self.label_string = label_string
+ gtk.Label.__init__(self, label_string%values)
+
+ def set_value(self, *values):
+ self.set_text(self.label_string%values)
+
+
+class IconButton(gtk.Button):
+ def __init__(self, label, iconpath=None, stock=None):
+ gtk.Button.__init__(self, label)
+
+ self.icon = gtk.Image()
+ if stock is not None:
+ self.icon.set_from_stock(stock, gtk.ICON_SIZE_BUTTON)
+ elif iconpath is not None:
+ self.icon.set_from_file(iconpath)
+ else:
+ raise TypeError, 'IconButton needs iconpath or stock'
+ self.set_image(self.icon)
+
+
+class LanguageChooser(gtk.Frame):
+ def __init__(self):
+ gtk.Frame.__init__(self, "Translate %s into:" % app_name)
+ self.set_border_width(SPACING)
+
+ model = gtk.ListStore(*[gobject.TYPE_STRING] * 2)
+ default = model.append(("System default", ''))
+
+ lang = read_language_file()
+ for l in languages:
+ it = model.append((language_names[l].encode('utf8'), l))
+ if l == lang:
+ default = it
+
+ self.combo = gtk.ComboBox(model)
+ cell = gtk.CellRendererText()
+ self.combo.pack_start(cell, True)
+ self.combo.add_attribute(cell, 'text', 0)
+
+ if default is not None:
+ self.combo.set_active_iter(default)
+
+ self.combo.connect('changed', self.changed)
+ box = gtk.VBox(spacing=SPACING)
+ box.set_border_width(SPACING)
+ box.pack_start(self.combo, expand=False, fill=False)
+ l = gtk.Label("You must restart %s for the\nlanguage "
+ "setting to take effect." % app_name)
+ l.set_alignment(0,1)
+ l.set_line_wrap(True)
+ box.pack_start(l, expand=False, fill=False)
+ self.add(box)
+
+ def changed(self, *a):
+ it = self.combo.get_active_iter()
+ model = self.combo.get_model()
+ code = model.get(it, 1)[0]
+ write_language_file(code)
+
+class IconMixin(object):
+ def __init__(self):
+ iconname = os.path.join(image_root,'bittorrent.ico')
+ icon16 = gtk.gdk.pixbuf_new_from_file_at_size(iconname, 16, 16)
+ icon32 = gtk.gdk.pixbuf_new_from_file_at_size(iconname, 32, 32)
+ self.set_icon_list(icon16, icon32)
+
+class Window(IconMixin, gtk.Window):
+ def __init__(self, *args):
+ gtk.Window.__init__(self, *args)
+ IconMixin.__init__(self)
+
+class HelpWindow(Window):
+ def __init__(self, main, helptext):
+ Window.__init__(self)
+ self.set_title(_("%s Help")%app_name)
+ self.main = main
+ self.set_border_width(SPACING)
+
+ self.vbox = gtk.VBox(spacing=SPACING)
+
+ self.faq_box = gtk.HBox(spacing=SPACING)
+ self.faq_box.pack_start(gtk.Label(_("Frequently Asked Questions:")), expand=False, fill=False)
+ self.faq_url = gtk.Entry()
+ self.faq_url.set_text(FAQ_URL)
+ self.faq_url.set_editable(False)
+ self.faq_box.pack_start(self.faq_url, expand=True, fill=True)
+ self.faq_button = gtk.Button(_("Go"))
+ self.faq_button.connect('clicked', lambda w: self.main.visit_url(FAQ_URL) )
+ self.faq_box.pack_start(self.faq_button, expand=False, fill=False)
+ self.vbox.pack_start(self.faq_box, expand=False, fill=False)
+
+ self.cmdline_args = gtk.Label(helptext)
+
+ self.cmdline_sw = ScrolledWindow()
+ self.cmdline_sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.cmdline_sw.add_with_viewport(self.cmdline_args)
+
+ self.cmdline_sw.set_size_request(self.cmdline_args.size_request()[0]+SCROLLBAR_WIDTH, 200)
+
+ self.vbox.pack_start(self.cmdline_sw)
+
+ self.add(self.vbox)
+
+ self.show_all()
+
+ if self.main is not None:
+ self.connect('destroy', lambda w: self.main.window_closed('help'))
+ else:
+ self.connect('destroy', lambda w: gtk.main_quit())
+ gtk.main()
+
+
+
+ def close(self, widget=None):
+ self.destroy()
+
+
+class ScrolledWindow(gtk.ScrolledWindow):
+ def scroll_to_bottom(self):
+ child_height = self.child.child.size_request()[1]
+ self.scroll_to(0, child_height)
+
+ def scroll_by(self, dx=0, dy=0):
+ v = self.get_vadjustment()
+ new_y = min(v.upper, v.value + dy)
+ self.scroll_to(0, new_y)
+
+ def scroll_to(self, x=0, y=0):
+ v = self.get_vadjustment()
+ child_height = self.child.child.size_request()[1]
+ new_adj = gtk.Adjustment(y, 0, child_height)
+ self.set_vadjustment(new_adj)
+
+
+class AutoScrollingWindow(ScrolledWindow):
+ def __init__(self):
+ ScrolledWindow.__init__(self)
+ self.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+ gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+ self.connect('drag_motion' , self.drag_motion )
+# self.connect('drag_data_received', self.drag_data_received)
+ self.vscrolltimeout = None
+
+# def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+# print _("AutoScrollingWindow.drag_data_received("), widget
+
+ def drag_motion(self, widget, context, x, y, time):
+ v = self.get_vadjustment()
+ if v.page_size - y <= 10:
+ amount = (10 - int(v.page_size - y)) * 2
+ self.start_scrolling(amount)
+ elif y <= 10:
+ amount = (y - 10) * 2
+ self.start_scrolling(amount)
+ else:
+ self.stop_scrolling()
+ return True
+
+ def scroll_and_wait(self, amount, lock_held):
+ if not lock_held:
+ gtk.threads_enter()
+ self.scroll_by(0, amount)
+ if not lock_held:
+ gtk.threads_leave()
+ if self.vscrolltimeout is not None:
+ gobject.source_remove(self.vscrolltimeout)
+ self.vscrolltimeout = gobject.timeout_add(100, self.scroll_and_wait, amount, False)
+ #print "adding timeout", self.vscrolltimeout, amount
+
+ def start_scrolling(self, amount):
+ if self.vscrolltimeout is not None:
+ gobject.source_remove(self.vscrolltimeout)
+ self.scroll_and_wait(amount, True)
+
+ def stop_scrolling(self):
+ if self.vscrolltimeout is not None:
+ #print "removing timeout", self.vscrolltimeout
+ gobject.source_remove(self.vscrolltimeout)
+ self.vscrolltimeout = None
+
+class MessageDialog(IconMixin, gtk.MessageDialog):
+ flags = gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT
+
+ def __init__(self, parent, title, message,
+ type=gtk.MESSAGE_ERROR,
+ buttons=gtk.BUTTONS_OK,
+ yesfunc=None, nofunc=None,
+ default=gtk.RESPONSE_OK
+ ):
+ gtk.MessageDialog.__init__(self, parent,
+ self.flags,
+ type, buttons, message)
+ IconMixin.__init__(self)
+
+ self.set_size_request(-1, -1)
+ self.set_resizable(False)
+ self.set_title(title)
+ if default is not None:
+ self.set_default_response(default)
+
+ self.label.set_line_wrap(True)
+
+ self.connect('response', self.callback)
+
+ self.yesfunc = yesfunc
+ self.nofunc = nofunc
+ if os.name == 'nt':
+ parent.present()
+ self.show_all()
+
+ def callback(self, widget, response_id, *args):
+ if ((response_id == gtk.RESPONSE_OK or
+ response_id == gtk.RESPONSE_YES) and
+ self.yesfunc is not None):
+ self.yesfunc()
+ if ((response_id == gtk.RESPONSE_CANCEL or
+ response_id == gtk.RESPONSE_NO )
+ and self.nofunc is not None):
+ self.nofunc()
+ self.destroy()
+
+class ErrorMessageDialog(MessageDialog):
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT
+
+
+class FileSelection(IconMixin, gtk.FileChooserDialog):
+
+ def __init__(self, action, main, title='', fullname='',
+ got_location_func=None, no_location_func=None,
+ got_multiple_location_func=None, show=True):
+ gtk.FileChooserDialog.__init__(self, action=action, title=title,
+ buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_OK, gtk.RESPONSE_OK))
+ IconMixin.__init__(self)
+ from BitTorrent.ConvertedMetainfo import filesystem_encoding
+ self.fsenc = filesystem_encoding
+ try:
+ fullname.decode('utf8')
+ except:
+ fullname = fullname.decode(self.fsenc)
+ self.set_default_response(gtk.RESPONSE_OK)
+ if action == gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER:
+ self.convert_button_box = gtk.HBox()
+ self.convert_button = gtk.Button(_("Choose an existing folder..."))
+ self.convert_button.connect('clicked', self.change_action)
+ self.convert_button_box.pack_end(self.convert_button,
+ expand=False,
+ fill=False)
+ self.convert_button_box.show_all()
+ self.set_extra_widget(self.convert_button_box)
+ elif action == gtk.FILE_CHOOSER_ACTION_OPEN:
+ self.all_filter = gtk.FileFilter()
+ self.all_filter.add_pattern('*')
+ self.all_filter.set_name(_("All Files"))
+ self.add_filter(self.all_filter)
+ self.torrent_filter = gtk.FileFilter()
+ self.torrent_filter.add_pattern('*.torrent')
+ self.torrent_filter.add_mime_type('application/x-bittorrent')
+ self.torrent_filter.set_name(_("Torrents"))
+ self.add_filter(self.torrent_filter)
+ self.set_filter(self.torrent_filter)
+
+ self.main = main
+ self.set_modal(True)
+ self.set_destroy_with_parent(True)
+ if fullname:
+ if action == gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER:
+ self.set_filename(fullname)
+ elif action == gtk.FILE_CHOOSER_ACTION_OPEN:
+ if fullname[-1] != os.sep:
+ fullname = fullname + os.sep
+ path, filename = os.path.split(fullname)
+ self.set_current_folder(path)
+ else:
+ if fullname[-1] == os.sep:
+ fullname = fullname[:-1]
+ path, filename = os.path.split(fullname)
+ if gtk.gtk_version < (2,8):
+ path = path.encode(self.fsenc)
+ self.set_current_folder(path)
+ self.set_current_name(filename)
+ if got_multiple_location_func is not None:
+ self.got_multiple_location_func = got_multiple_location_func
+ self.set_select_multiple(True)
+ self.got_location_func = got_location_func
+ self.no_location_func = no_location_func
+ self.connect('response', self.got_response)
+ self.d_handle = self.connect('destroy', self.got_response,
+ gtk.RESPONSE_CANCEL)
+ if show:
+ self.show()
+
+ def change_action(self, widget):
+ if self.get_action() == gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER:
+ self.convert_button.set_label(_("Create a new folder..."))
+ self.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ elif self.get_action() == gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER:
+ self.convert_button.set_label(_("Choose an existing folder..."))
+ self.set_action(gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER)
+
+ def got_response(self, widget, response):
+ if response == gtk.RESPONSE_OK:
+ if self.get_select_multiple():
+ if self.got_multiple_location_func is not None:
+ self.got_multiple_location_func(self.get_filenames())
+ elif self.got_location_func is not None:
+ fn = self.get_filename()
+ if fn:
+ self.got_location_func(fn)
+ else:
+ self.no_location_func()
+ else:
+ if self.no_location_func is not None:
+ self.no_location_func()
+ self.disconnect(self.d_handle)
+ self.destroy()
+
+ def done(self, widget=None):
+ if self.get_select_multiple():
+ self.got_multiple_location()
+ else:
+ self.got_location()
+ self.disconnect(self.d_handle)
+ self.destroy()
+
+ def close_child_windows(self):
+ self.destroy()
+
+ def close(self, widget=None):
+ self.destroy()
+
+
+class OpenFileSelection(FileSelection):
+
+ def __init__(self, *args, **kwargs):
+ FileSelection.__init__(self, gtk.FILE_CHOOSER_ACTION_OPEN, *args,
+ **kwargs)
+
+
+class SaveFileSelection(FileSelection):
+
+ def __init__(self, *args, **kwargs):
+ FileSelection.__init__(self, gtk.FILE_CHOOSER_ACTION_SAVE, *args,
+ **kwargs)
+
+
+class ChooseFolderSelection(FileSelection):
+
+ def __init__(self, *args, **kwargs):
+ FileSelection.__init__(self, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ *args, **kwargs)
+
+class CreateFolderSelection(FileSelection):
+
+ def __init__(self, *args, **kwargs):
+ FileSelection.__init__(self, gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER,
+ *args, **kwargs)
+
+
+class FileOrFolderSelection(FileSelection):
+ def __init__(self, *args, **kwargs):
+ FileSelection.__init__(self, gtk.FILE_CHOOSER_ACTION_OPEN, *args,
+ **kwargs)
+ self.select_file = _("Select a file" )
+ self.select_folder = _("Select a folder")
+ self.convert_button_box = gtk.HBox()
+ self.convert_button = gtk.Button(self.select_folder)
+ self.convert_button.connect('clicked', self.change_action)
+ self.convert_button_box.pack_end(self.convert_button,
+ expand=False,
+ fill=False)
+ self.convert_button_box.show_all()
+ self.set_extra_widget(self.convert_button_box)
+ self.reset_by_action()
+ self.set_filter(self.all_filter)
+
+
+ def change_action(self, widget):
+ if self.get_action() == gtk.FILE_CHOOSER_ACTION_OPEN:
+ self.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ elif self.get_action() == gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER:
+ self.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.reset_by_action()
+
+ def reset_by_action(self):
+ if self.get_action() == gtk.FILE_CHOOSER_ACTION_OPEN:
+ self.convert_button.set_label(self.select_folder)
+ self.set_title(self.select_file)
+ elif self.get_action() == gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER:
+ self.convert_button.set_label(self.select_file)
+ self.set_title(self.select_folder)
+
+ def set_title(self, title):
+ mytitle = title + ':'
+ FileSelection.set_title(self, mytitle)
+
+
+class PaddedHSeparator(gtk.VBox):
+ def __init__(self, spacing=SPACING):
+ gtk.VBox.__init__(self)
+ self.sep = gtk.HSeparator()
+ self.pack_start(self.sep, expand=False, fill=False, padding=spacing)
+ self.show_all()
+
+
+class HSeparatedBox(gtk.VBox):
+
+ def new_separator(self):
+ return PaddedHSeparator()
+
+ def _get_children(self):
+ return gtk.VBox.get_children(self)
+
+ def get_children(self):
+ return self._get_children()[0::2]
+
+ def _reorder_child(self, child, index):
+ gtk.VBox.reorder_child(self, child, index)
+
+ def reorder_child(self, child, index):
+ children = self._get_children()
+ oldindex = children.index(child)
+ sep = None
+ if oldindex == len(children) - 1:
+ sep = children[oldindex-1]
+ else:
+ sep = children[oldindex+1]
+
+ newindex = index*2
+ if newindex == len(children) -1:
+ self._reorder_child(sep, newindex-1)
+ self._reorder_child(child, newindex)
+ else:
+ self._reorder_child(child, newindex)
+ self._reorder_child(sep, newindex+1)
+
+ def pack_start(self, widget, *args, **kwargs):
+ if len(self._get_children()):
+ s = self.new_separator()
+ gtk.VBox.pack_start(self, s, *args, **kwargs)
+ s.show()
+ gtk.VBox.pack_start(self, widget, *args, **kwargs)
+
+ def pack_end(self, widget, *args, **kwargs):
+ if len(self._get_children()):
+ s = self.new_separator()
+ gtk.VBox.pack_start(self, s, *args, **kwargs)
+ s.show()
+ gtk.VBox.pack_end(self, widget, *args, **kwargs)
+
+ def remove(self, widget):
+ children = self._get_children()
+ if len(children) > 1:
+ index = children.index(widget)
+ if index == 0:
+ sep = children[index+1]
+ else:
+ sep = children[index-1]
+ sep.destroy()
+ gtk.VBox.remove(self, widget)
diff --git a/BitTorrent/GetTorrent.py b/BitTorrent/GetTorrent.py
new file mode 100644
index 0000000..a69651c
--- /dev/null
+++ b/BitTorrent/GetTorrent.py
@@ -0,0 +1,94 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# GetTorrent -- abstraction which can get a .torrent file from multiple
+# sources: local file, url, etc.
+
+# written by Matt Chisholm
+
+import os
+import re
+import zurllib
+from bencode import bdecode
+from BitTorrent.platform import get_cache_dir
+
+urlpat = re.compile('^\w+://')
+urlpat_torrent = re.compile('^torrent://')
+urlpat_bittorrent = re.compile('^bittorrent://')
+
+def get_quietly(arg):
+ (data, errors) = get(arg)
+ # If there's an error opening a file from the IE cache,
+ # act like we simply didn't get a file (because we didn't)
+ if errors:
+ cache = get_cache_dir()
+ if (cache is not None) and (cache in arg):
+ errors = []
+ return data, errors
+
+def get(arg):
+ data = None
+ errors = []
+ if os.access(arg, os.F_OK):
+ data, errors = get_file(arg)
+ elif urlpat.match(arg):
+ data, errors = get_url(arg)
+ else:
+ errors.append(_("Could not read %s") % arg)
+ return data, errors
+
+
+def get_url(url):
+ data = None
+ errors = []
+ err_str = _("Could not download or open \n%s\n"
+ "Try using a web browser to download the torrent file.") % url
+ u = None
+
+ # pending protocol changes, convert:
+ # torrent://http://path.to/file
+ # and:
+ # bittorrent://http://path.to/file
+ # to:
+ # http://path.to/file
+ url = urlpat_torrent.sub('', url)
+ url = urlpat_bittorrent.sub('', url)
+
+ try:
+ u = zurllib.urlopen(url)
+ data = u.read()
+ u.close()
+ b = bdecode(data)
+ except Exception, e:
+ if u is not None:
+ u.close()
+ errors.append(err_str + "\n(%s)" % e)
+ data = None
+ else:
+ if u is not None:
+ u.close()
+
+ return data, errors
+
+
+def get_file(filename):
+ data = None
+ errors = []
+ f = None
+ try:
+ f = file(filename, 'rb')
+ data = f.read()
+ f.close()
+ except Exception, e:
+ if f is not None:
+ f.close()
+ errors.append((_("Could not read %s") % filename) + (': %s' % str(e)))
+
+ return data, errors
diff --git a/BitTorrent/HTTPHandler.py b/BitTorrent/HTTPHandler.py
new file mode 100644
index 0000000..d147790
--- /dev/null
+++ b/BitTorrent/HTTPHandler.py
@@ -0,0 +1,188 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from RawServer_magic import Handler
+from cStringIO import StringIO
+from sys import stdout
+import time
+from gzip import GzipFile
+
+DEBUG = False
+
+weekdays = [_("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")]
+
+months = [None, _("Jan"), _("Feb"), _("Mar"), _("Apr"), _("May"), _("Jun"),
+ _("Jul"), _("Aug"), _("Sep"), _("Oct"), _("Nov"), _("Dec")]
+
+
+class HTTPConnection(object):
+
+ def __init__(self, handler, connection):
+ self.handler = handler
+ self.connection = connection
+ self.buf = ''
+ self.closed = False
+ self.done = False
+ self.donereading = False
+ self.next_func = self.read_type
+
+ def get_ip(self):
+ return self.connection.ip
+
+ def data_came_in(self, data):
+ if self.donereading or self.next_func is None:
+ return True
+ self.buf += data
+ while True:
+ try:
+ i = self.buf.index('\n')
+ except ValueError:
+ return True
+ val = self.buf[:i]
+ self.buf = self.buf[i+1:]
+ self.next_func = self.next_func(val)
+ if self.donereading:
+ return True
+ if self.next_func is None or self.closed:
+ return False
+
+ def read_type(self, data):
+ self.header = data.strip()
+ words = data.split()
+ if len(words) == 3:
+ self.command, self.path, garbage = words
+ self.pre1 = False
+ elif len(words) == 2:
+ self.command, self.path = words
+ self.pre1 = True
+ if self.command != 'GET':
+ return None
+ else:
+ return None
+ if self.command not in ('HEAD', 'GET'):
+ return None
+ self.headers = {}
+ return self.read_header
+
+ def read_header(self, data):
+ data = data.strip()
+ if data == '':
+ self.donereading = True
+ # check for Accept-Encoding: header, pick a
+ if self.headers.has_key('accept-encoding'):
+ ae = self.headers['accept-encoding']
+ if DEBUG:
+ print "Got Accept-Encoding: " + ae + "\n"
+ else:
+ #identity assumed if no header
+ ae = 'identity'
+ # this eventually needs to support multple acceptable types
+ # q-values and all that fancy HTTP crap
+ # for now assume we're only communicating with our own client
+ if ae.find('gzip') != -1:
+ self.encoding = 'gzip'
+ else:
+ #default to identity.
+ self.encoding = 'identity'
+ r = self.handler.getfunc(self, self.path, self.headers)
+ if r is not None:
+ self.answer(r)
+ return None
+ try:
+ i = data.index(':')
+ except ValueError:
+ return None
+ self.headers[data[:i].strip().lower()] = data[i+1:].strip()
+ if DEBUG:
+ print data[:i].strip() + ": " + data[i+1:].strip()
+ return self.read_header
+
+ def answer(self, (responsecode, responsestring, headers, data)):
+ if self.closed:
+ return
+ if self.encoding == 'gzip':
+ #transform data using gzip compression
+ #this is nasty but i'm unsure of a better way at the moment
+ compressed = StringIO()
+ gz = GzipFile(fileobj = compressed, mode = 'wb', compresslevel = 9)
+ gz.write(data)
+ gz.close()
+ compressed.seek(0,0)
+ cdata = compressed.read()
+ compressed.close()
+ if len(cdata) >= len(data):
+ self.encoding = 'identity'
+ else:
+ if DEBUG:
+ print _("Compressed: %i Uncompressed: %i\n") % (len(cdata),len(data))
+ data = cdata
+ headers['Content-Encoding'] = 'gzip'
+
+ # i'm abusing the identd field here, but this should be ok
+ if self.encoding == 'identity':
+ ident = '-'
+ else:
+ ident = self.encoding
+ username = '-'
+ referer = self.headers.get('referer','-')
+ useragent = self.headers.get('user-agent','-')
+ year, month, day, hour, minute, second, a, b, c = time.localtime(time.time())
+ print '%s %s %s [%02d/%3s/%04d:%02d:%02d:%02d] "%s" %i %i "%s" "%s"' % (
+ self.connection.ip, ident, username, day, months[month], year, hour,
+ minute, second, self.header, responsecode, len(data), referer, useragent)
+ t = time.time()
+ if t - self.handler.lastflush > self.handler.minflush:
+ self.handler.lastflush = t
+ stdout.flush()
+
+ self.done = True
+ r = StringIO()
+ r.write('HTTP/1.0 ' + str(responsecode) + ' ' +
+ responsestring + '\r\n')
+ if not self.pre1:
+ headers['Content-Length'] = len(data)
+ for key, value in headers.items():
+ r.write(key + ': ' + str(value) + '\r\n')
+ r.write('\r\n')
+ if self.command != 'HEAD':
+ r.write(data)
+ self.connection.write(r.getvalue())
+ if self.connection.is_flushed():
+ self.connection.shutdown(1)
+
+
+class HTTPHandler(Handler):
+
+ def __init__(self, getfunc, minflush):
+ self.connections = {}
+ self.getfunc = getfunc
+ self.minflush = minflush
+ self.lastflush = time.time()
+
+ def connection_made(self, connection):
+ self.connections[connection] = HTTPConnection(self, connection)
+
+ def connection_flushed(self, connection):
+ if self.connections[connection].done:
+ connection.shutdown(1)
+
+ def connection_lost(self, connection):
+ ec = self.connections[connection]
+ ec.closed = True
+ del ec.connection
+ del ec.next_func
+ del self.connections[connection]
+
+ def data_came_in(self, connection, data):
+ c = self.connections[connection]
+ if not c.data_came_in(data) and not c.closed:
+ c.connection.shutdown(1)
diff --git a/BitTorrent/IPC.py b/BitTorrent/IPC.py
new file mode 100644
index 0000000..9c1ef0c
--- /dev/null
+++ b/BitTorrent/IPC.py
@@ -0,0 +1,442 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Greg Hazel
+# based on code by Uoti Urpala
+from __future__ import generators
+
+import os
+import socket
+import sys
+import traceback
+if os.name == 'nt':
+ import win32api
+ import win32event
+ import winerror
+ import win32ui
+ import dde
+ import pywin.mfc.object
+
+from binascii import b2a_hex
+
+from BitTorrent.RawServer_magic import RawServer, Handler
+from BitTorrent.platform import get_home_dir, get_config_dir
+from BitTorrent import INFO, WARNING, ERROR, CRITICAL, BTFailure, app_name
+
+def toint(s):
+ return int(b2a_hex(s), 16)
+
+def tobinary(i):
+ return (chr(i >> 24) + chr((i >> 16) & 0xFF) +
+ chr((i >> 8) & 0xFF) + chr(i & 0xFF))
+
+CONTROL_SOCKET_PORT = 46881
+
+class ControlsocketListener(Handler):
+
+ def __init__(self, callback):
+ self.callback = callback
+
+ def connection_made(self, connection):
+ connection.handler = MessageReceiver(self.callback)
+
+
+class MessageReceiver(Handler):
+
+ def __init__(self, callback):
+ self.callback = callback
+ self._buffer = []
+ self._buffer_len = 0
+ self._reader = self._read_messages()
+ self._next_len = self._reader.next()
+
+ def _read_messages(self):
+ while True:
+ yield 4
+ l = toint(self._message)
+ yield l
+ action = self._message
+
+ if action in ('no-op',):
+ self.callback(action, None)
+ else:
+ yield 4
+ l = toint(self._message)
+ yield l
+ data = self._message
+ if action in ('show_error',):
+ self.callback(action, data)
+ else:
+ yield 4
+ l = toint(self._message)
+ yield l
+ path = self._message
+ if action in ('start_torrent'):
+ self.callback(action, data, path)
+
+ # copied from Connecter.py
+ def data_came_in(self, conn, s):
+ while True:
+ i = self._next_len - self._buffer_len
+ if i > len(s):
+ self._buffer.append(s)
+ self._buffer_len += len(s)
+ return
+ m = s[:i]
+ if self._buffer_len > 0:
+ self._buffer.append(m)
+ m = ''.join(self._buffer)
+ self._buffer = []
+ self._buffer_len = 0
+ s = s[i:]
+ self._message = m
+ try:
+ self._next_len = self._reader.next()
+ except StopIteration:
+ self._reader = None
+ conn.close()
+ return
+
+ def connection_lost(self, conn):
+ self._reader = None
+ pass
+
+ def connection_flushed(self, conn):
+ pass
+
+class IPC(object):
+ def __init__(self, config, log):
+ self.config = config
+ self.log = log
+ self.rawserver = None
+ self.callback = None
+
+ def create(self):
+ pass
+
+ def start(self, callback):
+ self.callback = callback
+
+ def send_command(self, command, *args):
+ pass
+
+ def handle_command(self, command, *args):
+ if callable(self.callback):
+ return self.callback(command, *args)
+ self.log(WARNING, _("Unhandled command: %s %s" % (str(command), str(args))))
+
+ def set_rawserver(self, rawserver):
+ self.rawserver = rawserver
+
+ def stop(self):
+ pass
+
+class IPCSocketBase(IPC):
+
+ def __init__(self, *args):
+ IPC.__init__(self, *args)
+ self.port = CONTROL_SOCKET_PORT
+
+ self.controlsocket = None
+
+ def start(self, callback):
+ IPC.start(self, callback)
+ self.rawserver.start_listening(self.controlsocket,
+ ControlsocketListener(self.handle_command))
+
+ def stop(self):
+ # safe double-stop, since TorrentQueue seems to be prone to do so
+ if self.controlsocket:
+ # it's possible we're told to stop after controlsocket creation but
+ # before rawserver registration
+ if self.rawserver:
+ self.rawserver.stop_listening(self.controlsocket)
+ self.controlsocket.close()
+ self.controlsocket = None
+
+class IPCUnixSocket(IPCSocketBase):
+
+ def __init__(self, *args):
+ IPCSocketBase.__init__(self, *args)
+ self.socket_filename = os.path.join(self.config['data_dir'], 'ui_socket')
+
+ def create(self):
+ filename = self.socket_filename
+ if os.path.exists(filename):
+ try:
+ self.send_command('no-op')
+ except BTFailure:
+ pass
+ else:
+ raise BTFailure(_("Could not create control socket: already in use"))
+
+ try:
+ os.unlink(filename)
+ except OSError, e:
+ raise BTFailure(_("Could not remove old control socket filename:")
+ + str(e))
+ try:
+ controlsocket = RawServer.create_unixserversocket(filename)
+ except socket.error, e:
+ raise BTFailure(_("Could not create control socket: ")+str(e))
+
+ self.controlsocket = controlsocket
+
+ # blocking version without rawserver
+ def send_command(self, command, *args):
+ s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ filename = self.socket_filename
+ try:
+ s.connect(filename)
+ s.send(tobinary(len(command)))
+ s.send(command)
+ for arg in args:
+ s.send(tobinary(len(arg)))
+ s.send(arg)
+ s.close()
+ except socket.error, e:
+ s.close()
+ raise BTFailure(_("Could not send command: ") + str(e))
+
+
+class IPCWin32Socket(IPCSocketBase):
+ def __init__(self, *args):
+ IPCSocketBase.__init__(self, *args)
+ self.socket_filename = os.path.join(self.config['data_dir'], 'ui_socket')
+ self.mutex = None
+ self.master = 0
+
+ def _get_sic_path(self):
+ directory = get_config_dir()
+ configdir = os.path.join(directory, '.bittorrent')
+ filename = os.path.join(configdir, ".btcontrol")
+ return filename
+
+ def create(self):
+ obtain_mutex = 1
+ mutex = win32event.CreateMutex(None, obtain_mutex, app_name)
+
+ # prevent the PyHANDLE from going out of scope, ints are fine
+ self.mutex = int(mutex)
+ mutex.Detach()
+
+ lasterror = win32api.GetLastError()
+
+ if lasterror == winerror.ERROR_ALREADY_EXISTS:
+ takeover = 0
+
+ try:
+ # if the mutex already exists, discover which port to connect to.
+ # if something goes wrong with that, tell us to take over the
+ # role of master
+ takeover = self.discover_sic_socket()
+ except:
+ pass
+
+ if not takeover:
+ raise BTFailure(_("Global mutex already created."))
+
+ self.master = 1
+
+ # lazy free port code
+ port_limit = 50000
+ while self.port < port_limit:
+ try:
+ controlsocket = RawServer.create_serversocket(self.port,
+ '127.0.0.1', reuse=True)
+ self.controlsocket = controlsocket
+ break
+ except socket.error, e:
+ self.port += 1
+
+ if self.port >= port_limit:
+ raise BTFailure(_("Could not find an open port!"))
+
+ filename = self._get_sic_path()
+ (path, name) = os.path.split(filename)
+ try:
+ os.makedirs(path)
+ except OSError, e:
+ # 17 is dir exists
+ if e.errno != 17:
+ BTFailure(_("Could not create application data directory!"))
+ f = open(filename, "w")
+ f.write(str(self.port))
+ f.close()
+
+ # we're done writing the control file, release the mutex so other instances can lock it and read the file
+ # but don't destroy the handle until the application closes, so that the named mutex is still around
+ win32event.ReleaseMutex(self.mutex)
+
+ def discover_sic_socket(self):
+ takeover = 0
+
+ # mutex exists and has been opened (not created, not locked).
+ # wait for it so we can read the file
+ r = win32event.WaitForSingleObject(self.mutex, win32event.INFINITE)
+
+ # WAIT_OBJECT_0 means the mutex was obtained
+ # WAIT_ABANDONED means the mutex was obtained, and it had previously been abandoned
+ if (r != win32event.WAIT_OBJECT_0) and (r != win32event.WAIT_ABANDONED):
+ raise BTFailure(_("Could not acquire global mutex lock for controlsocket file!"))
+
+ filename = self._get_sic_path()
+ try:
+ f = open(filename, "r")
+ self.port = int(f.read())
+ f.close()
+ except:
+ if (r == win32event.WAIT_ABANDONED):
+ self.log(WARNING, _("A previous instance of BT was not cleaned up properly. Continuing."))
+ # take over the role of master
+ takeover = 1
+ else:
+ self.log(WARNING, (_("Another instance of BT is running, but \"%s\" does not exist.\n") % filename)+
+ _("I'll guess at the port."))
+ try:
+ self.port = CONTROL_SOCKET_PORT
+ self.send_command('no-op')
+ self.log(WARNING, _("Port found: %d") % self.port)
+ try:
+ f = open(filename, "w")
+ f.write(str(self.port))
+ f.close()
+ except:
+ traceback.print_exc()
+ except:
+ # this is where this system falls down.
+ # There's another copy of BitTorrent running, or something locking the mutex,
+ # but I can't communicate with it.
+ self.log(WARNING, _("Could not find port."))
+
+
+ # we're done reading the control file, release the mutex so other instances can lock it and read the file
+ win32event.ReleaseMutex(self.mutex)
+
+ return takeover
+
+ #blocking version without rawserver
+ def send_command(self, command, *datas):
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ s.connect(('127.0.0.1', self.port))
+ s.send(tobinary(len(command)))
+ s.send(command)
+ for data in datas:
+ s.send(tobinary(len(data)))
+ s.send(data)
+ s.close()
+ except socket.error, e:
+ try:
+ s.close()
+ except:
+ pass
+ raise BTFailure(_("Could not send command: ") + str(e))
+
+
+ def stop(self):
+ if self.master:
+ r = win32event.WaitForSingleObject(self.mutex, win32event.INFINITE)
+ filename = self._get_sic_path()
+ try:
+ os.remove(filename)
+ except OSError, e:
+ # print, but continue
+ traceback.print_exc()
+ self.master = 0
+ win32event.ReleaseMutex(self.mutex)
+ # close it so the named mutex goes away
+ win32api.CloseHandle(self.mutex)
+ self.mutex = None
+
+if os.name == 'nt':
+ class HandlerObject(pywin.mfc.object.Object):
+ def __init__(self, handler, target):
+ self.handler = handler
+ pywin.mfc.object.Object.__init__(self, target)
+
+ class Topic(HandlerObject):
+ def __init__(self, handler, target):
+ target.AddItem(dde.CreateStringItem(""))
+ HandlerObject.__init__(self, handler, target)
+
+ def Request(self, x):
+ # null byte hack
+ x = x.replace("\\**0", "\0")
+ items = x.split("|")
+ self.handler(items[0], *items[1:])
+ return ("OK")
+
+ # remote procedure call
+ #def Exec(self, x):
+ # exec x
+
+ class Server(HandlerObject):
+ def __init__(self, log, *args):
+ self.log = log
+ HandlerObject.__init__(self, *args)
+
+ def CreateSystemTopic(self):
+ return Topic(self.handler, dde.CreateServerSystemTopic())
+
+ def Status(self, s):
+ #if self.log:
+ # self.log(INFO, _("IPC Status: %s") % s)
+ pass
+
+ def stop(self):
+ self.Shutdown()
+ self.Destroy()
+
+class IPCWin32DDE(IPC):
+ def create(self):
+ self.server = None
+
+ # try to connect first
+ self.client = Server(None, None, dde.CreateServer())
+ self.client.Create(app_name, dde.CBF_FAIL_SELFCONNECTIONS|dde.APPCMD_CLIENTONLY)
+ self.conversation = dde.CreateConversation(self.client)
+ try:
+ self.conversation.ConnectTo(app_name, "controlsocket")
+ raise BTFailure(_("DDE Conversation connected."))
+ except dde.error, e:
+ # no one is listening
+ pass
+
+ # clean up
+ self.client.stop()
+ del self.client
+ del self.conversation
+
+ # start server
+ self.server = Server(self.log, self.handle_command, dde.CreateServer())
+ self.server.Create(app_name, dde.CBF_FAIL_SELFCONNECTIONS|dde.APPCLASS_STANDARD)
+ self.server.AddTopic(Topic(self.handle_command, dde.CreateTopic("controlsocket")))
+
+ def send_command(self, command, *args):
+ s = '|'.join([command, ] + list(args))
+ # null byte hack
+ if s.count("\0") > 0:
+ self.log(WARNING, "IPC: String with null byte(s):" + s)
+ s = s.replace("\0", "\\**0")
+ result = self.conversation.Request(s)
+
+ def stop(self):
+ if self.server:
+ server = self.server
+ self.server = None
+ server.stop()
+
+if os.name == 'nt':
+ #ipc_interface = IPCWin32Socket
+ ipc_interface = IPCWin32DDE
+else:
+ ipc_interface = IPCUnixSocket
+ \ No newline at end of file
diff --git a/BitTorrent/LaunchPath.py b/BitTorrent/LaunchPath.py
new file mode 100644
index 0000000..3c78845
--- /dev/null
+++ b/BitTorrent/LaunchPath.py
@@ -0,0 +1,54 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# LaunchPath -- a cross platform way to "open," "launch," or "start"
+# files and directories
+
+# written by Matt Chisholm
+
+import os
+
+can_launch_files = False
+posix_browsers = ('gnome-open','konqueror',) #gmc, gentoo only work on dirs
+default_posix_browser = ''
+
+def launchpath_nt(path):
+ os.startfile(path)
+
+def launchpath_mac(path):
+ # BUG: this is untested
+ os.spawnlp(os.P_NOWAIT, 'open', 'open', path)
+
+def launchpath_posix(path):
+ if default_posix_browser:
+ os.spawnlp(os.P_NOWAIT, default_posix_browser,
+ default_posix_browser, path)
+
+def launchpath(path):
+ pass
+
+def launchdir(path):
+ if os.path.isdir(path):
+ launchpath(path)
+
+if os.name == 'nt':
+ can_launch_files = True
+ launchpath = launchpath_nt
+elif os.name == 'mac':
+ can_launch_files = True
+ launchpath = launchpath_mac
+elif os.name == 'posix':
+ for b in posix_browsers:
+ if os.system("which '%s' >/dev/null 2>&1" % b.replace("'","\\'")) == 0:
+ can_launch_files = True
+ default_posix_browser = b
+ launchpath = launchpath_posix
+ break
+
diff --git a/BitTorrent/NatCheck.py b/BitTorrent/NatCheck.py
new file mode 100644
index 0000000..6363ded
--- /dev/null
+++ b/BitTorrent/NatCheck.py
@@ -0,0 +1,101 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from cStringIO import StringIO
+from socket import error as socketerror
+
+protocol_name = 'BitTorrent protocol'
+
+# header, reserved, download id, my id, [length, message]
+
+
+class NatCheck(object):
+
+ def __init__(self, resultfunc, downloadid, peerid, ip, port, rawserver):
+ self.resultfunc = resultfunc
+ self.downloadid = downloadid
+ self.peerid = peerid
+ self.ip = ip
+ self.port = port
+ self.closed = False
+ self.buffer = StringIO()
+ self.next_len = 1
+ self.next_func = self.read_header_len
+ rawserver.async_start_connection((ip, port), self)
+
+ def connection_started(self, s):
+ self.connection = s
+ self.connection.write(chr(len(protocol_name)) + protocol_name +
+ (chr(0) * 8) + self.downloadid)
+
+ def connection_failed(self, addr, exception):
+ self.answer(False)
+
+ def answer(self, result):
+ self.closed = True
+ try:
+ self.connection.close()
+ except AttributeError:
+ pass
+ self.resultfunc(result, self.downloadid, self.peerid, self.ip, self.port)
+
+ def read_header_len(self, s):
+ if ord(s) != len(protocol_name):
+ return None
+ return len(protocol_name), self.read_header
+
+ def read_header(self, s):
+ if s != protocol_name:
+ return None
+ return 8, self.read_reserved
+
+ def read_reserved(self, s):
+ return 20, self.read_download_id
+
+ def read_download_id(self, s):
+ if s != self.downloadid:
+ return None
+ return 20, self.read_peer_id
+
+ def read_peer_id(self, s):
+ if s != self.peerid:
+ return None
+ self.answer(True)
+ return None
+
+ def data_came_in(self, connection, s):
+ while True:
+ if self.closed:
+ return
+ i = self.next_len - self.buffer.tell()
+ if i > len(s):
+ self.buffer.write(s)
+ return
+ self.buffer.write(s[:i])
+ s = s[i:]
+ m = self.buffer.getvalue()
+ self.buffer.reset()
+ self.buffer.truncate()
+ x = self.next_func(m)
+ if x is None:
+ if not self.closed:
+ self.answer(False)
+ return
+ self.next_len, self.next_func = x
+
+ def connection_lost(self, connection):
+ if not self.closed:
+ self.closed = True
+ self.resultfunc(False, self.downloadid, self.peerid, self.ip, self.port)
+
+ def connection_flushed(self, connection):
+ pass
diff --git a/BitTorrent/NatTraversal.py b/BitTorrent/NatTraversal.py
new file mode 100644
index 0000000..30eb377
--- /dev/null
+++ b/BitTorrent/NatTraversal.py
@@ -0,0 +1,757 @@
+# someday: http://files.dns-sd.org/draft-nat-port-mapping.txt
+# today: http://www.upnp.org/
+
+debug = False
+
+import sys
+import socket
+import os
+if os.name == 'nt':
+ import pywintypes
+ import win32com.client
+
+has_set = False
+try:
+ # python 2.4
+ s = set()
+ del s
+ has_set = True
+except NameError:
+ try:
+ # python 2.3
+ from sets import Set
+ set = Set
+ has_set = True
+ except ImportError:
+ # python 2.2
+ pass
+
+from BitTorrent import app_name, defer
+from BitTorrent import INFO, WARNING, ERROR
+from BitTorrent.platform import os_version
+from BitTorrent.RawServer_magic import RawServer, Handler
+from BitTorrent.BeautifulSupe import BeautifulSupe, Tag
+from urllib2 import URLError, HTTPError, Request
+
+#bleh
+from urllib import urlopen, FancyURLopener, addinfourl
+from httplib import HTTPResponse
+
+import threading
+import Queue
+import urlparse
+import random
+
+from traceback import print_stack, print_tb, print_exc
+
+def UnsupportedWarning(logfunc, s):
+ logfunc(WARNING, "NAT Traversal warning " + ("(%s: %s)." % (os_version, s)))
+
+def UPNPError(logfunc, s):
+ logfunc(ERROR, "UPnP ERROR: " + ("(%s: %s)." % (os_version, s)))
+
+class UPnPException(Exception):
+ pass
+
+__host_ip = None
+
+import thread
+
+def get_host_ip():
+ global __host_ip
+
+ if __host_ip is not None:
+ return __host_ip
+
+ #try:
+ # ip = socket.gethostbyname(socket.gethostname())
+ #except socket.error, e:
+ # mac sometimes throws an error, so they can just wait.
+ # plus, complicated /etc/hosts will return invalid IPs
+
+ try:
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.connect(("bittorrent.com", 80))
+ endpoint = s.getsockname()
+ __host_ip = endpoint[0]
+ except socket.error, e:
+ __host_ip = socket.gethostbyname(socket.gethostname())
+
+ return __host_ip
+
+
+class InfoFileHandle(object):
+ def __init__(self, logfunc):
+ self.logfunc = logfunc
+ def write(self, s):
+ self.logfunc(INFO, s)
+
+class NATEventLoop(threading.Thread):
+ def __init__(self, logfunc):
+ threading.Thread.__init__(self)
+ self.log = InfoFileHandle(logfunc)
+ self.queue = Queue.Queue()
+ self.killswitch = 0
+ self.setDaemon(True)
+
+ def run(self):
+
+ while (self.killswitch == 0):
+
+ event = self.queue.get()
+
+ try:
+ (f, a, kw) = event
+ f(*a, **kw)
+ except:
+ # sys can be none during interpritter shutdown
+ if sys is None:
+ break
+ # this prints the whole thing.
+ print_exc(file = self.log)
+ # this prints just the traceback to the application log
+ #print_tb(sys.exc_info()[2], file = self.log)
+ # this just prints the exception
+ #self.logfunc(INFO, str(sys.exc_info()[0]) + ": " + str(sys.exc_info()[1].__str__()))
+
+
+class NatTraverser(object):
+ def __init__(self, rawserver, logfunc):
+ self.rawserver = rawserver
+
+ def log_severity_filter(level, s, optional=True):
+ global debug
+ if level >= ERROR or debug or not optional:
+ logfunc(level, s)
+ self.logfunc = log_severity_filter
+
+ self.register_requests = []
+ self.unregister_requests = []
+ self.list_requests = []
+
+ self.service = None
+ self.services = []
+ self.current_service = 0
+
+ if self.rawserver.config['upnp']:
+ if os.name == 'nt':
+ self.services.append(WindowsUPnP)
+ self.services.append(ManualUPnP)
+
+ self.event_loop = NATEventLoop(self.logfunc)
+ self.event_loop.start()
+
+ self.resume_init_services()
+
+ def add_task(self, f, *a, **kw):
+ self.event_loop.queue.put((f, a, kw))
+
+ def init_services(self):
+ # this loop is a little funny so a service can resume the init if it fails later
+ if not self.rawserver.config['upnp']:
+ return
+ while self.current_service < len(self.services):
+ service = self.services[self.current_service]
+ self.current_service += 1
+ try:
+ self.logfunc(INFO, ("Trying: %s" % service.__name__))
+ service(self)
+ break
+ except Exception, e:
+ self.logfunc(WARNING, str(e))
+ else:
+ UnsupportedWarning(self.logfunc, "Unable to map a port using any service.")
+
+ def resume_init_services(self):
+ self.add_task(self.init_services)
+
+ def attach_service(self, service):
+ self.logfunc(INFO, ("Using: %s" % type(service).__name__))
+ self.service = service
+ self.add_task(self._flush_queue)
+
+ def detach_service(self, service):
+ if service != self.service:
+ self.logfunc(ERROR, ("Service: %s is not in use!" % type(service).__name__))
+ return
+ self.logfunc(INFO, ("Detached: %s" % type(service).__name__))
+ self.service = None
+
+ def _flush_queue(self):
+ if self.service:
+ for mapping in self.register_requests:
+ self.add_task(self.service.safe_register_port, mapping)
+ self.register_requests = []
+
+ for request in self.unregister_requests:
+ # unregisters can block, because they occur at shutdown
+ self.service.unregister_port(*request)
+ self.unregister_requests = []
+
+ for request in self.list_requests:
+ self.add_task(self._list_ports, request)
+ self.list_requests = []
+
+ def register_port(self, external_port, internal_port, protocol,
+ host = None, service_name = None):
+ mapping = UPnPPortMapping(external_port, internal_port, protocol,
+ host, service_name)
+ self.register_requests.append(mapping)
+
+ self.add_task(self._flush_queue)
+
+ return mapping.d
+
+ def unregister_port(self, external_port, protocol):
+ self.unregister_requests.append((external_port, protocol))
+
+ # unregisters can block, because they occur at shutdown
+ self._flush_queue()
+
+ def _list_ports(self, d):
+ matches = self.service._list_ports()
+ d.callback(matches)
+
+ def list_ports(self):
+ d = defer.Deferred()
+ self.list_requests.append(d)
+ self.add_task(self._flush_queue)
+ return d
+
+
+
+
+class NATBase(object):
+ def __init__(self, logfunc):
+ self.logfunc = logfunc
+ self.log = InfoFileHandle(logfunc)
+
+ def safe_register_port(self, new_mapping):
+
+ # check for the host now, while we're in the thread and before
+ # we need to read it.
+ new_mapping.populate_host()
+
+ self.logfunc(INFO, "You asked for: " + str(new_mapping))
+ new_mapping.original_external_port = new_mapping.external_port
+ mappings = self._list_ports()
+
+ used_ports = []
+ for mapping in mappings:
+ #only consider ports which match the same protocol
+ if mapping.protocol == new_mapping.protocol:
+ # look for exact matches
+ if (mapping.host == new_mapping.host and
+ mapping.internal_port == new_mapping.internal_port):
+ # the service name could not match, that's ok.
+ new_mapping.d.callback(mapping.external_port)
+ self.logfunc(INFO, "Already effectively mapped: " + str(new_mapping), optional=False)
+ return
+ # otherwise, add it to the list of used external ports
+ used_ports.append(mapping.external_port)
+
+ if has_set:
+ used_ports = set(used_ports)
+
+ if (not has_set) or (len(used_ports) < 1000):
+ # for small sets we can just guess around a little
+ while new_mapping.external_port in used_ports:
+ new_mapping.external_port += random.randint(1, 10)
+ # maybe this happens, I really doubt it
+ if new_mapping.external_port > 65535:
+ new_mapping.external_port = 1025
+ else:
+ # for larger sets we don't want to guess forever
+ all_ports = set(range(1024, 65535))
+ free_ports = all_ports - used_ports
+ new_mapping.external_port = random.choice(free_ports)
+
+ self.logfunc(INFO, "I'll give you: " + str(new_mapping))
+ self.register_port(new_mapping)
+
+ def register_port(self, port):
+ pass
+ def unregister_port(self, external_port, protocol):
+ pass
+ def _list_ports(self):
+ pass
+
+class UPnPPortMapping(object):
+ def __init__(self, external_port, internal_port, protocol,
+ host = None, service_name = None):
+ self.external_port = int(external_port)
+ self.internal_port = int(internal_port)
+ self.protocol = protocol
+
+ self.host = host
+
+ if service_name:
+ self.service_name = service_name
+ else:
+ self.service_name = app_name
+
+ self.d = defer.Deferred()
+
+ def populate_host(self):
+ # throw out '' or None or ints, also look for semi-valid IPs
+ if (not isinstance(self.host, str)) or (self.host.count('.') < 3):
+ self.host = get_host_ip()
+
+ def __str__(self):
+ return "%s %s external:%d %s:%d" % (self.service_name, self.protocol,
+ self.external_port,
+ self.host, self.internal_port)
+
+def VerifySOAPResponse(request, response):
+ if response.code != 200:
+ raise HTTPError(request.get_full_url(),
+ response.code, str(response.msg) + " (unexpected SOAP response code)",
+ response.info(), response)
+
+ data = response.read()
+ bs = BeautifulSupe(data)
+ soap_response = bs.scour("m:", "Response")
+ if not soap_response:
+ # maybe I should read the SOAP spec.
+ soap_response = bs.scour("u:", "Response")
+ if not soap_response:
+ raise HTTPError(request.get_full_url(),
+ response.code, str(response.msg) +
+ " (incorrect SOAP response method)",
+ response.info(), response)
+ return soap_response[0]
+
+def SOAPResponseToDict(soap_response):
+ result = {}
+ for tag in soap_response.child_elements():
+ value = None
+ if tag.contents:
+ value = str(tag.contents[0])
+ result[tag.name] = value
+ return result
+
+def SOAPErrorToString(response):
+ if not isinstance(response, Exception):
+ data = response.read()
+ bs = BeautifulSupe(data)
+ error = bs.first('errorDescription')
+ if error:
+ return str(error.contents[0])
+ return str(response)
+
+_urlopener = None
+def urlopen_custom(req, rawserver):
+ global _urlopener
+
+ if not _urlopener:
+ opener = FancyURLopener()
+ _urlopener = opener
+ #remove User-Agent
+ del _urlopener.addheaders[:]
+
+ if not isinstance(req, str):
+ #for header in r.headers:
+ # _urlopener.addheaders.append((header, r.headers[header]))
+ #return _urlopener.open(r.get_full_url(), r.data)
+
+ # All this has to be done manually, since httplib and urllib 1 and 2
+ # add headers to the request that some routers do not accept.
+ # A minimal, functional request includes the headers:
+ # Content-Length
+ # Soapaction
+ # I have found the following to be specifically disallowed:
+ # User-agent
+ # Connection
+ # Accept-encoding
+
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+
+ (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(req.get_full_url())
+
+ if not scheme.startswith("http"):
+ raise ValueError("UPnP URL scheme is not http: " + req.get_full_url())
+
+ if len(path) == 0:
+ path = '/'
+
+ if netloc.count(":") > 0:
+ host, port = netloc.split(':', 1)
+ try:
+ port = int(port)
+ except:
+ raise ValueError("UPnP URL port is not int: " + req.get_full_url())
+ else:
+ host = netloc
+ port = 80
+
+ header_str = ''
+ data = ''
+ method = ''
+ header_str = " " + path + " HTTP/1.0\r\n"
+ if req.has_data():
+ method = 'POST'
+ header_str = method + header_str
+ header_str += "Content-Length: " + str(len(req.data)) + "\r\n"
+ data = req.data + "\r\n"
+ else:
+ method = 'GET'
+ header_str = method + header_str
+
+ header_str += "Host: " + host + ":" + str(port) + "\r\n"
+
+ for header in req.headers:
+ header_str += header + ": " + str(req.headers[header]) + "\r\n"
+
+ header_str += "\r\n"
+ data = header_str + data
+
+ try:
+ rawserver._add_pending_connection(host)
+ s.connect((host, port))
+ finally:
+ rawserver._remove_pending_connection(host)
+
+ s.send(data)
+ r = HTTPResponse(s, method=method)
+ r.begin()
+
+ r.recv = r.read
+ fp = socket._fileobject(r)
+
+ resp = addinfourl(fp, r.msg, req.get_full_url())
+ resp.code = r.status
+ resp.msg = r.reason
+
+ return resp
+ return _urlopener.open(req)
+
+
+class ManualUPnP(NATBase, Handler):
+
+ upnp_addr = ('239.255.255.250', 1900)
+
+ search_string = ('M-SEARCH * HTTP/1.1\r\n' +
+ 'Host:239.255.255.250:1900\r\n' +
+ 'ST:urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\n' +
+ 'Man:"ssdp:discover"\r\n' +
+ 'MX:3\r\n' +
+ '\r\n')
+
+ # if you think for one second that I'm going to implement SOAP in any fashion, you're crazy
+
+ get_mapping_template = ('<?xml version="1.0"?>' +
+ '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"' +
+ 's:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
+ '<s:Body>' +
+ '<u:GetGenericPortMappingEntry xmlns:u=' +
+ '"urn:schemas-upnp-org:service:WANIPConnection:1">' +
+ '<NewPortMappingIndex>%d</NewPortMappingIndex>' +
+ '</u:GetGenericPortMappingEntry>' +
+ '</s:Body>' +
+ '</s:Envelope>')
+
+ add_mapping_template = ('<?xml version="1.0"?>' +
+ '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle=' +
+ '"http://schemas.xmlsoap.org/soap/encoding/">' +
+ '<s:Body>' +
+ '<u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">' +
+ '<NewEnabled>1</NewEnabled>' +
+ '<NewRemoteHost></NewRemoteHost>' +
+ '<NewLeaseDuration>0</NewLeaseDuration>' +
+ '<NewInternalPort>%d</NewInternalPort>' +
+ '<NewExternalPort>%d</NewExternalPort>' +
+ '<NewProtocol>%s</NewProtocol>' +
+ '<NewInternalClient>%s</NewInternalClient>' +
+ '<NewPortMappingDescription>%s</NewPortMappingDescription>' +
+ '</u:AddPortMapping>' +
+ '</s:Body>' +
+ '</s:Envelope>')
+
+ delete_mapping_template = ('<?xml version="1.0"?>' +
+ '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle=' +
+ '"http://schemas.xmlsoap.org/soap/encoding/">' +
+ '<s:Body>' +
+ '<u:DeletePortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">' +
+ '<NewRemoteHost></NewRemoteHost>' +
+ '<NewExternalPort>%d</NewExternalPort>' +
+ '<NewProtocol>%s</NewProtocol>' +
+ '</u:DeletePortMapping>' +
+ '</s:Body>' +
+ '</s:Envelope>')
+
+ def _pretify(self, body):
+ # I actually found a router that needed one tag per line
+ body = body.replace('><', '>\r\n<')
+ body = body.encode('utf-8')
+ return body
+
+ def _build_get_mapping_request(self, pmi):
+ body = (self.get_mapping_template % (pmi))
+ body = self._pretify(body)
+ headers = {'SOAPAction': '"urn:schemas-upnp-org:service:WANIPConnection:1#' +
+ 'GetGenericPortMappingEntry"'}
+ return Request(self.controlURL, body, headers)
+
+ def _build_add_mapping_request(self, mapping):
+ body = (self.add_mapping_template % (mapping.internal_port, mapping.external_port, mapping.protocol,
+ mapping.host, mapping.service_name))
+ body = self._pretify(body)
+ headers = {'SOAPAction': '"urn:schemas-upnp-org:service:WANIPConnection:1#' +
+ 'AddPortMapping"'}
+ return Request(self.controlURL, body, headers)
+
+ def _build_delete_mapping_request(self, external_port, protocol):
+ body = (self.delete_mapping_template % (external_port, protocol))
+ body = self._pretify(body)
+ headers = {'SOAPAction': '"urn:schemas-upnp-org:service:WANIPConnection:1#' +
+ 'DeletePortMapping"'}
+ return Request(self.controlURL, body, headers)
+
+ def __init__(self, traverser):
+ NATBase.__init__(self, traverser.logfunc)
+
+ self.controlURL = None
+ self.transport = None
+ self.traverser = traverser
+ self.rawserver = traverser.rawserver
+
+ # this service can only be provided if rawserver supports multicast
+ if not hasattr(self.rawserver, "create_multicastsocket"):
+ raise AttributeError, "rawserver.create_multicastsocket"
+
+ self.rawserver.external_add_task(self.begin_discovery, 0, ())
+
+ def begin_discovery(self):
+
+ # bind to an available port, and join the multicast group
+ for p in xrange(self.upnp_addr[1], self.upnp_addr[1]+5000):
+ try:
+ # Original RawServer cannot do this!
+ s = self.rawserver.create_multicastsocket(p, get_host_ip())
+ self.transport = s
+ self.rawserver.start_listening_multicast(s, self)
+ s.listening_port.joinGroup(self.upnp_addr[0], socket.INADDR_ANY)
+ break
+ except socket.error, e:
+ pass
+
+ if not self.transport:
+ # resume init services, because we couldn't bind to a port
+ self.traverser.resume_init_services()
+ else:
+ self.transport.sendto(self.search_string, 0, self.upnp_addr)
+ self.transport.sendto(self.search_string, 0, self.upnp_addr)
+ self.rawserver.add_task(self._discovery_timedout, 6, ())
+
+ def _discovery_timedout(self):
+ if self.transport:
+ self.logfunc(WARNING, "Discovery timed out")
+ self.rawserver.stop_listening_multicast(self.transport)
+ self.transport = None
+ # resume init services, because we know we've failed
+ self.traverser.resume_init_services()
+
+ def register_port(self, mapping):
+ request = self._build_add_mapping_request(mapping)
+
+ try:
+ response = urlopen_custom(request, self.rawserver)
+ response = VerifySOAPResponse(request, response)
+ mapping.d.callback(mapping.external_port)
+ self.logfunc(INFO, "registered: " + str(mapping), optional=False)
+ except Exception, e: #HTTPError, URLError, BadStatusLine, you name it.
+ error = SOAPErrorToString(e)
+ mapping.d.errback(error)
+
+
+ def unregister_port(self, external_port, protocol):
+ request = self._build_delete_mapping_request(external_port, protocol)
+
+ try:
+ response = urlopen_custom(request, self.rawserver)
+ response = VerifySOAPResponse(request, response)
+ self.logfunc(INFO, ("unregisterd: %s, %s" % (external_port, protocol)), optional=False)
+ except Exception, e: #HTTPError, URLError, BadStatusLine, you name it.
+ error = SOAPErrorToString(e)
+ self.logfunc(ERROR, error)
+
+ def data_came_in(self, addr, datagram):
+ if self.transport is None:
+ return
+ statusline, response = datagram.split('\r\n', 1)
+ httpversion, statuscode, reasonline = statusline.split(None, 2)
+ if (not httpversion.startswith('HTTP')) or (statuscode != '200'):
+ return
+ headers = response.split('\r\n')
+ location = None
+ for header in headers:
+ prefix = 'location:'
+ if header.lower().startswith(prefix):
+ location = header[len(prefix):]
+ location = location.strip()
+ if location:
+ self.rawserver.stop_listening_multicast(self.transport)
+ self.transport = None
+
+ self.traverser.add_task(self._got_location, location)
+
+ def _got_location(self, location):
+ if self.controlURL is not None:
+ return
+
+ URLBase = location
+
+ data = urlopen_custom(location, self.rawserver).read()
+ bs = BeautifulSupe(data)
+
+ URLBase_tag = bs.first('URLBase')
+ if URLBase_tag and URLBase_tag.contents:
+ URLBase = str(URLBase_tag.contents[0])
+
+ wanservices = bs.fetch('service', dict(serviceType=
+ 'urn:schemas-upnp-org:service:WANIPConnection:'))
+ wanservices += bs.fetch('service', dict(serviceType=
+ 'urn:schemas-upnp-org:service:WANPPPConnection:'))
+ for service in wanservices:
+ controlURL = service.get('controlURL')
+ if controlURL:
+ self.controlURL = urlparse.urljoin(URLBase, controlURL)
+ break
+
+ if self.controlURL is None:
+ # resume init services, because we know we've failed
+ self.traverser.resume_init_services()
+ return
+
+ # attach service, so the queue gets flushed
+ self.traverser.attach_service(self)
+
+ def _list_ports(self):
+ mappings = []
+ index = 0
+
+ if self.controlURL is None:
+ raise UPnPException("ManualUPnP is not prepared")
+
+ while True:
+ request = self._build_get_mapping_request(index)
+
+ try:
+ response = urlopen_custom(request, self.rawserver)
+ soap_response = VerifySOAPResponse(request, response)
+ results = SOAPResponseToDict(soap_response)
+ mapping = UPnPPortMapping(results['NewExternalPort'], results['NewInternalPort'],
+ results['NewProtocol'], results['NewInternalClient'],
+ results['NewPortMappingDescription'])
+ mappings.append(mapping)
+ index += 1
+ except URLError, e:
+ # SpecifiedArrayIndexInvalid, for example
+ break
+ except (HTTPError, BadStatusLine), e:
+ self.logfunc(ERROR, ("list_ports failed with: %s" % (e)))
+
+
+ return mappings
+
+class WindowsUPnPException(UPnPException):
+ def __init__(self, msg, *args):
+ msg += " (%s)" % os_version
+ a = [msg] + list(args)
+ UPnPException.__init__(self, *a)
+
+class WindowsUPnP(NATBase):
+ def __init__(self, traverser):
+ NATBase.__init__(self, traverser.logfunc)
+
+ self.upnpnat = None
+ self.port_collection = None
+ self.traverser = traverser
+
+ win32com.client.pythoncom.CoInitialize()
+
+ try:
+ self.upnpnat = win32com.client.Dispatch("HNetCfg.NATUPnP")
+ except pywintypes.com_error, e:
+ if (e[2][5] == -2147221005):
+ raise WindowsUPnPException("invalid class string")
+ else:
+ raise
+
+ try:
+ self.port_collection = self.upnpnat.StaticPortMappingCollection
+ if self.port_collection is None:
+ raise WindowsUPnPException("none port_collection")
+ except pywintypes.com_error, e:
+ #if e[1].lower() == "exception occurred.":
+ if (e[2][5] == -2147221164):
+ #I think this is Class Not Registered
+ #it happens on Windows 98 after the XP ICS wizard has been run
+ raise WindowsUPnPException("exception occurred, class not registered")
+ else:
+ raise
+
+ # attach service, so the queue gets flushed
+ self.traverser.attach_service(self)
+
+
+ def register_port(self, mapping):
+ try:
+ self.port_collection.Add(mapping.external_port, mapping.protocol,
+ mapping.internal_port, mapping.host,
+ True, mapping.service_name)
+ self.logfunc(INFO, "registered: " + str(mapping), optional=False)
+ mapping.d.callback(mapping.external_port)
+ except pywintypes.com_error, e:
+ # host == 'fake' or address already bound
+ #if (e[2][5] == -2147024726):
+ # host == '', or I haven't a clue
+ #e.args[0] == -2147024894
+
+ #mapping.d.errback(e)
+
+ # detach self so the queue isn't flushed
+ self.traverser.detach_service(self)
+
+ if hasattr(mapping, 'original_external_port'):
+ mapping.external_port = mapping.original_external_port
+ del mapping.original_external_port
+
+ # push this mapping back on the queue
+ self.traverser.register_requests.append(mapping)
+
+ # resume init services, because we know we've failed
+ self.traverser.resume_init_services()
+
+ def unregister_port(self, external_port, protocol):
+ try:
+ self.port_collection.Remove(external_port, protocol)
+ self.logfunc(INFO, ("unregisterd: %s, %s" % (external_port, protocol)), optional=False)
+ except pywintypes.com_error, e:
+ if (e[2][5] == -2147352567):
+ UPNPError(self.logfunc, ("Port %d:%s not bound" % (external_port, protocol)))
+ elif (e[2][5] == -2147221008):
+ UPNPError(self.logfunc, ("Port %d:%s is bound and is not ours to remove" % (external_port, protocol)))
+ elif (e[2][5] == -2147024894):
+ UPNPError(self.logfunc, ("Port %d:%s not bound (2)" % (external_port, protocol)))
+ else:
+ raise
+
+ def _list_ports(self):
+ mappings = []
+
+ try:
+ for mp in self.port_collection:
+ mapping = UPnPPortMapping(mp.ExternalPort, mp.InternalPort, mp.Protocol,
+ mp.InternalClient, mp.Description)
+ mappings.append(mapping)
+ except pywintypes.com_error, e:
+ # it's the "for mp in self.port_collection" iter that can throw
+ # an exception.
+ # com_error: (-2147220976, 'The owner of the PerUser subscription is
+ # not logged on to the system specified',
+ # None, None)
+ pass
+
+ return mappings
+
diff --git a/BitTorrent/NewVersion.py b/BitTorrent/NewVersion.py
new file mode 100644
index 0000000..1395370
--- /dev/null
+++ b/BitTorrent/NewVersion.py
@@ -0,0 +1,278 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# written by Matt Chisholm
+
+import os
+import sys
+import zurllib
+import pickle
+import threading
+from sha import sha
+
+DEBUG = False
+
+from BitTorrent import ERROR, WARNING, BTFailure, version, app_name
+from BitTorrent import GetTorrent
+from BitTorrent.bencode import bdecode, bencode
+from BitTorrent.platform import os_version, spawn, get_temp_dir, doc_root, is_frozen_exe, osx
+from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
+
+if osx:
+ from Foundation import NSAutoreleasePool
+
+if is_frozen_exe or DEBUG:
+ # needed for py2exe to include the public key lib
+ from Crypto.PublicKey import DSA
+
+version_host = 'http://version.bittorrent.com/'
+download_url = 'http://bittorrent.com/download.html'
+
+# based on Version() class from ShellTools package by Matt Chisholm,
+# used with permission
+class Version(list):
+ def __str__(self):
+ return '.'.join(map(str, self))
+
+ def is_beta(self):
+ return self[1] % 2 == 1
+
+ def from_str(self, text):
+ return Version( [int(t) for t in text.split('.')] )
+
+ def name(self):
+ if self.is_beta():
+ return 'beta'
+ else:
+ return 'stable'
+
+ from_str = classmethod(from_str)
+
+currentversion = Version.from_str(version)
+
+availableversion = None
+
+class Updater(object):
+ def __init__(self, threadwrap, newversionfunc, startfunc, installfunc,
+ errorfunc, test_new_version='', test_current_version=''):
+ self.threadwrap = threadwrap # for calling back to UI from thread
+ self.newversionfunc = newversionfunc # alert to new version UI function
+ self.startfunc = startfunc # start torrent UI function
+ self.installfunc = installfunc # install torrent UI function
+ self.errorfunc = errorfunc # report error UI function
+ self.infohash = None
+ self.version = currentversion
+ self.currentversion = currentversion
+ self.asked_for_install = False
+ self.version_site = version_host
+ if os.name == 'nt':
+ self.version_site += 'win32/'
+ if os_version not in ('XP', '2000', '2003'):
+ self.version_site += 'legacy/'
+ elif osx:
+ self.version_site += 'osx/'
+ self.debug_mode = DEBUG
+ if test_new_version:
+ test_new_version = Version.from_str(test_new_version)
+ self.debug_mode = True
+ def _hack_get_available(url):
+ return test_new_version
+ self._get_available = _hack_get_available
+ if test_current_version:
+ self.debug_mode = True
+ self.currentversion = Version.from_str(test_current_version)
+
+
+ def debug(self, message):
+ if self.debug_mode:
+ self.threadwrap(self.errorfunc, WARNING, message)
+
+
+ def _get_available(self, url):
+ self.debug('Updater.get_available() hitting url %s' % url)
+ try:
+ u = zurllib.urlopen(url)
+ s = u.read()
+ s = s.strip()
+ except:
+ raise BTFailure(_("Could not get latest version from %s")%url)
+ try:
+ assert len(s) == 5
+ availableversion = Version.from_str(s)
+ except:
+ raise BTFailure(_("Could not parse new version string from %s")%url)
+ return availableversion
+
+
+ def get_available(self):
+ url = self.version_site + self.currentversion.name()
+ availableversion = self._get_available(url)
+ if availableversion.is_beta():
+ if availableversion[1] != self.currentversion[1]:
+ availableversion = self.currentversion
+ if self.currentversion.is_beta():
+ stable_url = self.version_site + 'stable'
+ available_stable_version = self._get_available(stable_url)
+ if available_stable_version > availableversion:
+ availableversion = available_stable_version
+ self.version = availableversion
+ self.debug('Updater.get_available() got %s' % str(self.version))
+ return self.version
+
+
+ def get(self):
+ try:
+ self.get_available()
+ except BTFailure, e:
+ self.threadwrap(self.errorfunc, WARNING, e)
+ return
+
+ if self.version <= self.currentversion:
+ self.debug('Updater.get() not updating old version %s' % str(self.version))
+ return
+
+ if not self.can_install():
+ self.debug('Updater.get() cannot install on this os')
+ return
+
+ self.installer_name = self.calc_installer_name()
+ self.installer_url = self.version_site + self.installer_name + '.torrent'
+ self.installer_dir = self.calc_installer_dir()
+
+ self.torrentfile = None
+ torrentfile, terrors = GetTorrent.get_url(self.installer_url)
+ signature = None
+ try:
+ signfile = zurllib.urlopen(self.installer_url + '.sign')
+ except:
+ self.debug('Updater.get() failed to get signfile %s.sign' % self.installer_url)
+ else:
+ try:
+ signature = pickle.load(signfile)
+ except:
+ self.debug('Updater.get() failed to load signfile %s' % signfile)
+
+ if terrors:
+ self.threadwrap(self.errorfunc, WARNING, '\n'.join(terrors))
+
+ if torrentfile and signature:
+ public_key_file = open(os.path.join(doc_root, 'public.key'), 'rb')
+ public_key = pickle.load(public_key_file)
+ h = sha(torrentfile).digest()
+ if public_key.verify(h, signature):
+ self.torrentfile = torrentfile
+ b = bdecode(torrentfile)
+ self.infohash = sha(bencode(b['info'])).digest()
+ self.total_size = b['info']['length']
+ self.debug('Updater.get() got torrent file and signature')
+ else:
+ self.debug('Updater.get() torrent file signature failed to verify.')
+ pass
+ else:
+ self.debug('Updater.get() doesn\'t have torrentfile %s and signature %s' %
+ (str(type(torrentfile)), str(type(signature))))
+
+ def installer_path(self):
+ if self.installer_dir is not None:
+ return os.path.join(self.installer_dir,
+ self.installer_name)
+ else:
+ return None
+
+ def check(self):
+ t = threading.Thread(target=self._check,
+ args=())
+ t.setDaemon(True)
+ t.start()
+
+ def _check(self):
+ if osx:
+ pool = NSAutoreleasePool.alloc().init()
+ self.get()
+ if self.version > self.currentversion:
+ self.threadwrap(self.newversionfunc, self.version, download_url)
+
+ def can_install(self):
+ if self.debug_mode:
+ return True
+ if os.name == 'nt':
+ return True
+ elif osx:
+ return True
+ else:
+ return False
+
+ def calc_installer_name(self):
+ if os.name == 'nt':
+ ext = 'exe'
+ elif osx:
+ ext = 'dmg'
+ elif os.name == 'posix' and self.debug_mode:
+ ext = 'tar.gz'
+ else:
+ return
+
+ parts = [app_name, str(self.version)]
+ if self.version.is_beta():
+ parts.append('Beta')
+ name = '-'.join(parts)
+ name += '.' + ext
+ return name
+
+ def set_installer_dir(self, path):
+ self.installer_dir = path
+
+ def calc_installer_dir(self):
+ if hasattr(self, 'installer_dir'):
+ return self.installer_dir
+
+ temp_dir = get_temp_dir()
+ if temp_dir is not None:
+ return temp_dir
+ else:
+ self.errorfunc(WARNING,
+ _("Could not find a suitable temporary location to "
+ "save the %s %s installer.") % (app_name, self.version))
+
+ def installer_downloaded(self):
+ if self.installer_path() and os.access(self.installer_path(), os.F_OK):
+ size = os.stat(self.installer_path())[6]
+ if size == self.total_size:
+ return True
+ else:
+ #print 'installer is wrong size, is', size, 'should be', self.total_size
+ return False
+ else:
+ #print 'installer does not exist'
+ return False
+
+ def download(self):
+ if self.torrentfile is not None:
+ self.startfunc(self.torrentfile, self.installer_path())
+ else:
+ self.errorfunc(WARNING, _("No torrent file available for %s %s "
+ "installer.")%(app_name, self.version))
+
+ def start_install(self):
+ if not self.asked_for_install:
+ if self.installer_downloaded():
+ self.asked_for_install = True
+ self.installfunc()
+ else:
+ self.errorfunc(WARNING,
+ _("%s %s installer appears to be incomplete, "
+ "missing, or corrupt.")%(app_name,
+ self.version))
+
+ def launch_installer(self, torrentqueue):
+ if os.name == 'nt':
+ spawn(torrentqueue, self.installer_path(), "/S")
+ else:
+ self.errorfunc(WARNING, _("Cannot launch installer on this OS"))
diff --git a/BitTorrent/PeerID.py b/BitTorrent/PeerID.py
new file mode 100644
index 0000000..9dc9285
--- /dev/null
+++ b/BitTorrent/PeerID.py
@@ -0,0 +1,28 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.0 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Matt Chisholm
+
+import os
+from sha import sha
+from time import time
+try:
+ getpid = os.getpid
+except AttributeError:
+ def getpid():
+ return 1
+
+from BitTorrent import version
+
+def make_id():
+ myid = 'M' + version.split()[0].replace('.', '-')
+ myid = myid + ('-' * (8-len(myid)))+sha(repr(time())+ ' ' +
+ str(getpid())).digest()[-6:].encode('hex')
+ return myid
diff --git a/BitTorrent/PiecePicker.py b/BitTorrent/PiecePicker.py
new file mode 100644
index 0000000..e22b13a
--- /dev/null
+++ b/BitTorrent/PiecePicker.py
@@ -0,0 +1,138 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from random import randrange, shuffle, choice
+
+
+class PiecePicker(object):
+
+ def __init__(self, numpieces, config):
+ self.config = config
+ self.numpieces = numpieces
+ self.interests = [range(numpieces)]
+ self.pos_in_interests = range(numpieces)
+ self.numinterests = [0] * numpieces
+ self.have = [False] * numpieces
+ self.crosscount = [numpieces]
+ self.started = []
+ self.seedstarted = []
+ self.numgot = 0
+ self.scrambled = range(numpieces)
+ shuffle(self.scrambled)
+
+ def got_have(self, piece):
+ numint = self.numinterests[piece]
+ self.crosscount[numint + self.have[piece]] -= 1
+ self.numinterests[piece] += 1
+ try:
+ self.crosscount[numint + 1 + self.have[piece]] += 1
+ except IndexError:
+ self.crosscount.append(1)
+ if self.have[piece]:
+ return
+ if numint == len(self.interests) - 1:
+ self.interests.append([])
+ self._shift_over(piece, self.interests[numint], self.interests[numint + 1])
+
+ def lost_have(self, piece):
+ numint = self.numinterests[piece]
+ self.crosscount[numint + self.have[piece]] -= 1
+ self.numinterests[piece] -= 1
+ self.crosscount[numint - 1 + self.have[piece]] += 1
+ if self.have[piece]:
+ return
+ self._shift_over(piece, self.interests[numint], self.interests[numint - 1])
+
+ def _shift_over(self, piece, l1, l2):
+ p = self.pos_in_interests[piece]
+ l1[p] = l1[-1]
+ self.pos_in_interests[l1[-1]] = p
+ del l1[-1]
+ newp = randrange(len(l2) + 1)
+ if newp == len(l2):
+ self.pos_in_interests[piece] = len(l2)
+ l2.append(piece)
+ else:
+ old = l2[newp]
+ self.pos_in_interests[old] = len(l2)
+ l2.append(old)
+ l2[newp] = piece
+ self.pos_in_interests[piece] = newp
+
+ def requested(self, piece, seed = False):
+ if piece not in self.started:
+ self.started.append(piece)
+ if seed and piece not in self.seedstarted:
+ self.seedstarted.append(piece)
+
+ def complete(self, piece):
+ assert not self.have[piece]
+ self.have[piece] = True
+ self.crosscount[self.numinterests[piece]] -= 1
+ try:
+ self.crosscount[self.numinterests[piece] + 1] += 1
+ except IndexError:
+ self.crosscount.append(1)
+ self.numgot += 1
+ l = self.interests[self.numinterests[piece]]
+ p = self.pos_in_interests[piece]
+ l[p] = l[-1]
+ self.pos_in_interests[l[-1]] = p
+ del l[-1]
+ try:
+ self.started.remove(piece)
+ self.seedstarted.remove(piece)
+ except ValueError:
+ pass
+
+ def next(self, havefunc, seed = False):
+ bests = None
+ bestnum = 2 ** 30
+ if seed:
+ s = self.seedstarted
+ else:
+ s = self.started
+ for i in s:
+ if havefunc(i):
+ if self.numinterests[i] < bestnum:
+ bests = [i]
+ bestnum = self.numinterests[i]
+ elif self.numinterests[i] == bestnum:
+ bests.append(i)
+ if bests:
+ return choice(bests)
+ if self.numgot < self.config['rarest_first_cutoff']:
+ for i in self.scrambled:
+ if havefunc(i):
+ return i
+ return None
+ for i in xrange(1, min(bestnum, len(self.interests))):
+ for j in self.interests[i]:
+ if havefunc(j):
+ return j
+ return None
+
+ def am_I_complete(self):
+ return self.numgot == self.numpieces
+
+ def bump(self, piece):
+ l = self.interests[self.numinterests[piece]]
+ pos = self.pos_in_interests[piece]
+ del l[pos]
+ l.append(piece)
+ for i in range(pos,len(l)):
+ self.pos_in_interests[l[i]] = i
+ try:
+ self.started.remove(piece)
+ self.seedstarted.remove(piece)
+ except ValueError:
+ pass
diff --git a/BitTorrent/RateLimiter.py b/BitTorrent/RateLimiter.py
new file mode 100644
index 0000000..d58f2c4
--- /dev/null
+++ b/BitTorrent/RateLimiter.py
@@ -0,0 +1,190 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Uoti Urpala and Andrew Loewenstern
+
+from BitTorrent.platform import bttime
+
+def minctx(a,b):
+ A = B = 0
+ if a.rate > 0:
+ A = a.offset_amount / a.rate
+ if b.rate > 0:
+ B = b.offset_amount / b.rate
+ if A <= B:
+ return a
+ return b
+
+class Dummy(object):
+ def __init__(self, next):
+ self.next_upload = next
+ def send_partial(self, size):
+ return 0
+ closed = False
+
+class RateLimitedGroup(object):
+ def __init__(self, rate, got_exception):
+ self.got_exception = got_exception
+ # limiting
+ self.check_time = 0
+ self.lasttime = bttime()
+ self.offset_amount = 0
+ self.set_rate(rate)
+ # accounting
+ self.count = 0
+ self.counts = []
+
+ def set_rate(self, new_rate):
+ self.rate = new_rate * 1024
+ self.check_time = 0
+ self.offset_amount = 0
+
+class MultiRateLimiter(object):
+ def __init__(self, sched):
+ self.sched = sched
+ self.last = None
+ self.upload_rate = 0
+ self.unitsize = 17000
+ self.offset_amount = 0
+ self.ctxs = [] # list of contexts with connections in the queue
+ self.ctx_counts = {} # dict conn -> how many connections each context has
+
+ def set_parameters(self, rate, unitsize):
+ if unitsize > 17000:
+ # Since data is sent to peers in a round-robin fashion, max one
+ # full request at a time, setting this higher would send more data
+ # to peers that use request sizes larger than standard 16 KiB.
+ # 17000 instead of 16384 to allow room for metadata messages.
+ unitsize = 17000
+ self.upload_rate = rate * 1024
+ self.unitsize = unitsize
+ self.lasttime = bttime()
+ self.offset_amount = 0
+
+ def queue(self, conn, ctx):
+ assert conn.next_upload is None
+ if ctx not in self.ctxs:
+ ctx.check_time = 1
+ self.ctxs.append(ctx)
+ self.ctx_counts[ctx] = 1
+ else:
+ self.ctx_counts[ctx] += 1
+
+ if self.last is None:
+ self.last = conn
+ conn.next_upload = conn
+ self.try_send(True)
+ else:
+ conn.next_upload = self.last.next_upload
+ self.last.next_upload = conn
+ self.last = conn
+
+ def increase_offset(self, bytes):
+ self.offset_amount += bytes
+
+ def try_send(self, check_time = False):
+ t = bttime()
+ cur = self.last.next_upload
+
+ if self.upload_rate > 0:
+ self.offset_amount -= (t - self.lasttime) * self.upload_rate
+ if check_time:
+ self.offset_amount = max(self.offset_amount, -1 * self.unitsize)
+ else:
+ self.offset_amount = 0
+
+ self.lasttime = t
+
+ for ctx in self.ctxs:
+ if ctx.rate == 0:
+ ctx.offset_amount = 0
+ ctx.lasttime = t
+ elif ctx.lasttime != t:
+ ctx.offset_amount -=(t - ctx.lasttime) * ctx.rate
+ ctx.lasttime = t
+ if ctx.check_time:
+ ctx.offset_amount = max(ctx.offset_amount, -1 * self.unitsize)
+
+ min_offset = reduce(minctx, self.ctxs)
+ ctx = cur.encoder.context.rlgroup
+ while self.offset_amount <= 0 and min_offset.offset_amount <= 0:
+ if ctx.offset_amount <= 0:
+ try:
+ bytes = cur.send_partial(self.unitsize)
+ except KeyboardInterrupt:
+ raise
+ except Exception, e:
+ cur.encoder.context.rlgroup.got_exception(e)
+ cur = self.last.next_upload
+ bytes = 0
+
+ if self.upload_rate > 0:
+ self.offset_amount += bytes
+ if ctx.rate > 0:
+ ctx.offset_amount += bytes
+
+ ctx.count += bytes
+
+ if bytes == 0 or not cur.connection.is_flushed():
+ if self.last is cur:
+ self.last = None
+ cur.next_upload = None
+ self.ctx_counts = {}
+ self.ctxs = []
+ break
+ else:
+ self.last.next_upload = cur.next_upload
+ cur.next_upload = None
+ old = ctx
+ cur = self.last.next_upload
+ ctx = cur.encoder.context.rlgroup
+ self.ctx_counts[old] -= 1
+ if self.ctx_counts[old] == 0:
+ del(self.ctx_counts[old])
+ self.ctxs.remove(old)
+ if min_offset == old:
+ min_offset = reduce(minctx, self.ctxs)
+ else:
+ self.last = cur
+ cur = cur.next_upload
+ ctx = cur.encoder.context.rlgroup
+ min_offset = reduce(minctx, self.ctxs)
+ else:
+ self.last = cur
+ cur = self.last.next_upload
+ ctx = cur.encoder.context.rlgroup
+ else:
+ myDelay = minCtxDelay = 0
+ if self.upload_rate > 0:
+ myDelay = 1.0 * self.offset_amount / self.upload_rate
+ if min_offset.rate > 0:
+ minCtxDelay = 1.0 * min_offset.offset_amount / min_offset.rate
+ delay = max(myDelay, minCtxDelay)
+ self.sched(self.try_send, delay)
+
+
+ def clean_closed(self):
+ if self.last is None:
+ return
+ orig = self.last
+ if self.last.closed:
+ self.last = Dummy(self.last.next_upload)
+ self.last.encoder = orig.encoder
+ c = self.last
+ while True:
+ if c.next_upload is orig:
+ c.next_upload = self.last
+ break
+ if c.next_upload.closed:
+ o = c.next_upload
+ c.next_upload = Dummy(c.next_upload.next_upload)
+ c.next_upload.encoder = o.encoder
+ c = c.next_upload
+
diff --git a/BitTorrent/RateMeasure.py b/BitTorrent/RateMeasure.py
new file mode 100644
index 0000000..b609330
--- /dev/null
+++ b/BitTorrent/RateMeasure.py
@@ -0,0 +1,63 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from BitTorrent.platform import bttime
+
+
+class RateMeasure(object):
+
+ def __init__(self, left):
+ self.start = None
+ self.last = None
+ self.rate = 0
+ self.remaining = None
+ self.left = left
+ self.broke = False
+ self.got_anything = False
+
+ def data_came_in(self, amount):
+ if not self.got_anything:
+ self.got_anything = True
+ self.start = bttime() - 2
+ self.last = self.start
+ self.left -= amount
+ return
+ self.update(bttime(), amount)
+
+ def data_rejected(self, amount):
+ self.left += amount
+
+ def get_time_left(self):
+ if not self.got_anything:
+ return None
+ t = bttime()
+ if t - self.last > 15:
+ self.update(t, 0)
+ return self.remaining
+
+ def get_size_left(self):
+ return self.left
+
+ def update(self, t, amount):
+ self.left -= amount
+ try:
+ self.rate = ((self.rate * (self.last - self.start)) + amount) / (t - self.start)
+ self.last = t
+ self.remaining = self.left / self.rate
+ if self.start < self.last - self.remaining:
+ self.start = self.last - self.remaining
+ except ZeroDivisionError:
+ self.remaining = None
+ if self.broke and self.last - self.start < 20:
+ self.start = self.last - 20
+ if self.last - self.start > 20:
+ self.broke = True
diff --git a/BitTorrent/RawServer.py b/BitTorrent/RawServer.py
new file mode 100644
index 0000000..efa067d
--- /dev/null
+++ b/BitTorrent/RawServer.py
@@ -0,0 +1,501 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala
+
+import os
+import sys
+import socket
+import signal
+import struct
+import thread
+from bisect import insort
+from cStringIO import StringIO
+from traceback import print_exc
+from errno import EWOULDBLOCK, ENOBUFS, EINTR
+
+from BitTorrent.platform import bttime
+from BitTorrent import WARNING, CRITICAL, FAQ_URL
+from BitTorrent.defer import Deferred
+
+try:
+ from select import poll, error, POLLIN, POLLOUT, POLLERR, POLLHUP
+ timemult = 1000
+except ImportError:
+ from BitTorrent.selectpoll import poll, error, POLLIN, POLLOUT, POLLERR, POLLHUP
+ timemult = 1
+
+NOLINGER = struct.pack('ii', 1, 0)
+
+
+class Handler(object):
+
+ # there is only a semantic difference between "made" and "started".
+ # I prefer "started"
+ def connection_started(self, s):
+ self.connection_made(s)
+ def connection_made(self, s):
+ pass
+
+ def connection_lost(self, s):
+ pass
+
+ # Maybe connection_lost should just have a default 'None' exception parameter
+ def connection_failed(self, addr, exception):
+ pass
+
+ def connection_flushed(self, s):
+ pass
+ def data_came_in(self, addr, datagram):
+ pass
+
+
+class SingleSocket(object):
+
+ def __init__(self, rawserver, sock, handler, context, addr=None):
+ self.rawserver = rawserver
+ self.socket = sock
+ self.handler = handler
+ self.buffer = []
+ self.last_hit = bttime()
+ self.fileno = sock.fileno()
+ self.connected = False
+ self.context = context
+ self.ip = None
+ self.port = None
+
+
+ if isinstance(addr, basestring):
+ # UNIX socket, not really ip
+ self.ip = addr
+ else:
+ peername = (None, None)
+ try:
+ peername = self.socket.getpeername()
+ except socket.error, e:
+ # UDP raises (107, 'Transport endpoint is not connected')
+ # but so can a TCP socket we just got from start_connection,
+ # in which case addr is set and we use it later.
+ if (e[0] == 107) and (addr == None):
+ # lies.
+ # the peer endpoint should be gathered from the
+ # tuple passed to data_came_in
+ try:
+ peername = self.socket.getsockname()
+ except socket.error, e:
+ pass
+
+ # this is awesome!
+ # max prefers a value over None, so this is a common case:
+ # max(('ip', None), ('ip', 1234)) => ('ip', 1234)
+ # or the default case:
+ # max(('ip', None), None) => ('ip', None)
+ self.ip, self.port = max(peername, addr)
+
+
+ def close(self):
+ sock = self.socket
+ self.socket = None
+ self.buffer = []
+ del self.rawserver.single_sockets[self.fileno]
+ self.rawserver.poll.unregister(sock)
+ self.handler = None
+ if self.rawserver.config['close_with_rst']:
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, NOLINGER)
+ sock.close()
+
+ def shutdown(self, val):
+ self.socket.shutdown(val)
+
+ def is_flushed(self):
+ return len(self.buffer) == 0
+
+ def write(self, s):
+ assert self.socket is not None
+ self.buffer.append(s)
+ if len(self.buffer) == 1:
+ self.try_write()
+
+ def try_write(self):
+ if self.connected:
+ try:
+ while self.buffer != []:
+ amount = self.socket.send(self.buffer[0])
+ if amount != len(self.buffer[0]):
+ if amount != 0:
+ self.buffer[0] = self.buffer[0][amount:]
+ break
+ del self.buffer[0]
+ except socket.error, e:
+ code, msg = e
+ if code != EWOULDBLOCK:
+ self.rawserver.dead_from_write.append(self)
+ return
+ if self.buffer == []:
+ self.rawserver.poll.register(self.socket, POLLIN)
+ else:
+ self.rawserver.poll.register(self.socket, POLLIN | POLLOUT)
+
+
+def default_error_handler(level, message):
+ print message
+
+class RawServer(object):
+
+ def __init__(self, doneflag, config, noisy=True,
+ errorfunc=default_error_handler, tos=0):
+ self.config = config
+ self.tos = tos
+ self.poll = poll()
+ # {socket: SingleSocket}
+ self.single_sockets = {}
+ self.udp_sockets = {}
+ self.dead_from_write = []
+ self.doneflag = doneflag
+ self.noisy = noisy
+ self.errorfunc = errorfunc
+ self.funcs = []
+ self.externally_added_tasks = []
+ self.listening_handlers = {}
+ self.serversockets = {}
+ self.live_contexts = {None : True}
+ self.ident = thread.get_ident()
+ self.to_start = []
+ self.add_task(self.scan_for_timeouts, config['timeout_check_interval'])
+ if sys.platform.startswith('win'):
+ # Windows doesn't support pipes with select(). Just prevent sleeps
+ # longer than a second instead of proper wakeup for now.
+ self.wakeupfds = (None, None)
+ self._wakeup()
+ else:
+ self.wakeupfds = os.pipe()
+ self.poll.register(self.wakeupfds[0], POLLIN)
+
+ def _wakeup(self):
+ self.add_task(self._wakeup, 1)
+
+ def add_context(self, context):
+ self.live_contexts[context] = True
+
+ def remove_context(self, context):
+ del self.live_contexts[context]
+ self.funcs = [x for x in self.funcs if x[3] != context]
+
+ def add_task(self, func, delay, args=(), context=None):
+ assert thread.get_ident() == self.ident
+ assert type(args) == list or type(args) == tuple
+ if context in self.live_contexts:
+ insort(self.funcs, (bttime() + delay, func, args, context))
+
+ def external_add_task(self, func, delay, args=(), context=None):
+ assert type(args) == list or type(args) == tuple
+ self.externally_added_tasks.append((func, delay, args, context))
+ # Wake up the RawServer thread in case it's sleeping in poll()
+ if self.wakeupfds[1] is not None:
+ os.write(self.wakeupfds[1], 'X')
+
+ def scan_for_timeouts(self):
+ self.add_task(self.scan_for_timeouts,
+ self.config['timeout_check_interval'])
+ t = bttime() - self.config['socket_timeout']
+ tokill = []
+ for s in [s for s in self.single_sockets.values() if s not in self.udp_sockets.keys()]:
+ if s.last_hit < t:
+ tokill.append(s)
+ for k in tokill:
+ if k.socket is not None:
+ self._close_socket(k)
+
+ def create_unixserversocket(filename):
+ server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ server.setblocking(0)
+ server.bind(filename)
+ server.listen(5)
+ return server
+ create_unixserversocket = staticmethod(create_unixserversocket)
+
+ def create_serversocket(port, bind='', reuse=False, tos=0):
+ server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ if reuse and os.name != 'nt':
+ server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ server.setblocking(0)
+ if tos != 0:
+ try:
+ server.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, tos)
+ except:
+ pass
+ server.bind((bind, port))
+ server.listen(5)
+ return server
+ create_serversocket = staticmethod(create_serversocket)
+
+ def create_udpsocket(port, bind='', reuse=False, tos=0):
+ server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ if reuse and os.name != 'nt':
+ server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ server.setblocking(0)
+ if tos != 0:
+ try:
+ server.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, tos)
+ except:
+ pass
+ server.bind((bind, port))
+ return server
+ create_udpsocket = staticmethod(create_udpsocket)
+
+ def start_listening(self, serversocket, handler, context=None):
+ self.listening_handlers[serversocket.fileno()] = (handler, context)
+ self.serversockets[serversocket.fileno()] = serversocket
+ self.poll.register(serversocket, POLLIN)
+
+ def start_listening_udp(self, serversocket, handler, context=None):
+ self.listening_handlers[serversocket.fileno()] = (handler, context)
+ nss = SingleSocket(self, serversocket, handler, context)
+ self.single_sockets[serversocket.fileno()] = nss
+ self.udp_sockets[nss] = 1
+ self.poll.register(serversocket, POLLIN)
+
+ def stop_listening(self, serversocket):
+ del self.listening_handlers[serversocket.fileno()]
+ del self.serversockets[serversocket.fileno()]
+ self.poll.unregister(serversocket)
+
+ def stop_listening_udp(self, serversocket):
+ del self.listening_handlers[serversocket.fileno()]
+ del self.single_sockets[serversocket.fileno()]
+ l = [s for s in self.udp_sockets.keys() if s.socket == serversocket]
+ del self.udp_sockets[l[0]]
+ self.poll.unregister(serversocket)
+
+ def start_connection(self, dns, handler=None, context=None, do_bind=True):
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.setblocking(0)
+ bindaddr = do_bind and self.config['bind']
+ if bindaddr:
+ sock.bind((bindaddr, 0))
+ if self.tos != 0:
+ try:
+ sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, self.tos)
+ except:
+ pass
+ try:
+ sock.connect_ex(dns)
+ except socket.error:
+ sock.close()
+ raise
+ except Exception, e:
+ sock.close()
+ raise socket.error(str(e))
+ self.poll.register(sock, POLLIN)
+ s = SingleSocket(self, sock, handler, context, dns)
+ self.single_sockets[sock.fileno()] = s
+ return s
+
+ def _add_pending_connection(self, addr):
+ pass
+
+ def _remove_pending_connection(self, addr):
+ pass
+
+ def async_start_connection(self, dns, handler=None, context=None, do_bind=True):
+ self.to_start.insert(0, (dns, handler, context, do_bind))
+ self._start_connection()
+ return True
+
+ def _start_connection(self):
+ dns, handler, context, do_bind = self.to_start.pop()
+ try:
+ s = self.start_connection(dns, handler, context, do_bind)
+ except Exception, e:
+ handler.connection_failed(dns, e)
+ else:
+ handler.connection_started(s)
+
+ def wrap_socket(self, sock, handler, context=None, ip=None, port=None):
+ sock.setblocking(0)
+ self.poll.register(sock, POLLIN)
+ s = SingleSocket(self, sock, handler, context, (ip, port))
+ self.single_sockets[sock.fileno()] = s
+ return s
+
+ # must be called from the main thread
+ def install_sigint_handler(self):
+ signal.signal(signal.SIGINT, self._handler)
+
+ def _handler(self, signum, frame):
+ self.external_add_task(self.doneflag.set, 0)
+ # Allow pressing ctrl-c multiple times to raise KeyboardInterrupt,
+ # in case the program is in an infinite loop
+ signal.signal(signal.SIGINT, signal.default_int_handler)
+
+ def _handle_events(self, events):
+ for sock, event in events:
+ if sock in self.serversockets:
+ s = self.serversockets[sock]
+ if event & (POLLHUP | POLLERR) != 0:
+ try:
+ self.poll.unregister(s)
+ s.close()
+ except socket.error, e:
+ self.errorfunc(WARNING, _("failed to unregister or close server socket: %s") % str(e))
+ self.errorfunc(CRITICAL, _("lost server socket"))
+ else:
+ handler, context = self.listening_handlers[sock]
+ try:
+ newsock, addr = s.accept()
+ except socket.error, e:
+ continue
+ try:
+ newsock.setblocking(0)
+ nss = SingleSocket(self, newsock, handler, context, addr)
+ self.single_sockets[newsock.fileno()] = nss
+ self.poll.register(newsock, POLLIN)
+ self._make_wrapped_call(handler. \
+ connection_made, (nss,), context=context)
+ except socket.error, e:
+ self.errorfunc(WARNING,
+ _("Error handling accepted connection: ") +
+ str(e))
+ else:
+ s = self.single_sockets.get(sock)
+ if s is None:
+ if sock == self.wakeupfds[0]:
+ # Another thread wrote this just to wake us up.
+ os.read(sock, 1)
+ continue
+ s.connected = True
+ if event & POLLERR:
+ self._close_socket(s)
+ continue
+ if event & (POLLIN | POLLHUP):
+ s.last_hit = bttime()
+ try:
+ data, addr = s.socket.recvfrom(100000)
+ except socket.error, e:
+ code, msg = e
+ if code != EWOULDBLOCK:
+ self._close_socket(s)
+ continue
+ if data == '' and not self.udp_sockets.has_key(s):
+ self._close_socket(s)
+ else:
+ if not self.udp_sockets.has_key(s):
+ self._make_wrapped_call(s.handler.data_came_in,
+ (s, data), s)
+ else:
+ self._make_wrapped_call(s.handler.data_came_in,
+ (addr, data), s)
+
+ # data_came_in could have closed the socket (s.socket = None)
+ if event & POLLOUT and s.socket is not None:
+ s.try_write()
+ if s.is_flushed():
+ self._make_wrapped_call(s.handler.connection_flushed,
+ (s,), s)
+
+ def _pop_externally_added(self):
+ while self.externally_added_tasks:
+ task = self.externally_added_tasks.pop(0)
+ self.add_task(*task)
+
+ def listen_forever(self):
+ ret = 0
+ self.ident = thread.get_ident()
+ while not self.doneflag.isSet() and not ret:
+ ret = self.listen_once()
+
+ def listen_once(self, period=1e9):
+ try:
+ self._pop_externally_added()
+ if self.funcs:
+ period = self.funcs[0][0] - bttime()
+ if period < 0:
+ period = 0
+ events = self.poll.poll(period * timemult)
+ if self.doneflag.isSet():
+ return 0
+ while self.funcs and self.funcs[0][0] <= bttime():
+ garbage, func, args, context = self.funcs.pop(0)
+ self._make_wrapped_call(func, args, context=context)
+ self._close_dead()
+ self._handle_events(events)
+ if self.doneflag.isSet():
+ return 0
+ self._close_dead()
+ except error, e:
+ if self.doneflag.isSet():
+ return 0
+ # I can't find a coherent explanation for what the behavior
+ # should be here, and people report conflicting behavior,
+ # so I'll just try all the possibilities
+ code = None
+ if hasattr(e, '__getitem__'):
+ code = e[0]
+ else:
+ code = e
+ if code == ENOBUFS:
+ # log the traceback so we can see where the exception is coming from
+ print_exc(file = sys.stderr)
+ self.errorfunc(CRITICAL,
+ _("Have to exit due to the TCP stack flaking "
+ "out. Please see the FAQ at %s") % FAQ_URL)
+ return -1
+ elif code in (EINTR,):
+ # add other ignorable error codes here
+ pass
+ else:
+ self.errorfunc(CRITICAL, str(e))
+ return 0
+ except KeyboardInterrupt:
+ print_exc()
+ return -1
+ except:
+ data = StringIO()
+ print_exc(file=data)
+ self.errorfunc(CRITICAL, data.getvalue())
+ return 0
+
+ def _make_wrapped_call(self, function, args, socket=None, context=None):
+ try:
+ function(*args)
+ except KeyboardInterrupt:
+ raise
+ except Exception, e: # hopefully nothing raises strings
+ # Incoming sockets can be assigned to a particular torrent during
+ # a data_came_in call, and it's possible (though not likely) that
+ # there could be a torrent-specific exception during the same call.
+ # Therefore read the context after the call.
+ if socket is not None:
+ context = socket.context
+ if self.noisy and context is None:
+ data = StringIO()
+ print_exc(file=data)
+ self.errorfunc(CRITICAL, data.getvalue())
+ if context is not None:
+ context.got_exception(e)
+
+ def _close_dead(self):
+ while len(self.dead_from_write) > 0:
+ old = self.dead_from_write
+ self.dead_from_write = []
+ for s in old:
+ if s.socket is not None:
+ self._close_socket(s)
+
+ def _close_socket(self, s):
+ sock = s.socket.fileno()
+ if self.config['close_with_rst']:
+ s.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, NOLINGER)
+ s.socket.close()
+ self.poll.unregister(sock)
+ del self.single_sockets[sock]
+ s.socket = None
+ self._make_wrapped_call(s.handler.connection_lost, (s,), s)
+ s.handler = None
diff --git a/BitTorrent/RawServer_magic.py b/BitTorrent/RawServer_magic.py
new file mode 100644
index 0000000..198e237
--- /dev/null
+++ b/BitTorrent/RawServer_magic.py
@@ -0,0 +1,63 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Greg Hazel
+
+class BaseMagic:
+ base = None
+ too_late = False
+
+magic = BaseMagic()
+
+from BitTorrent import BTFailure
+
+try:
+ import RawServer_twisted
+ magic.base = RawServer_twisted.RawServer
+ Handler = RawServer_twisted.Handler
+except ImportError:
+ import RawServer
+ magic.base = RawServer.RawServer
+ Handler = RawServer.Handler
+
+def switch_rawserver(choice):
+ if magic.too_late:
+ raise BTFailure(_("Too late to switch RawServer backends, %s has already been used.") % str(magic.base))
+
+ if choice.lower() == 'twisted':
+ import RawServer_twisted
+ magic.base = RawServer_twisted.RawServer
+ else:
+ import RawServer
+ magic.base = RawServer.RawServer
+
+class _RawServerMetaclass:
+ def __init__(self, *args):
+ pass
+
+ def __getattr__(self, name):
+ magic.too_late = True
+ try:
+ return getattr(magic.base, name)
+ except:
+ raise AttributeError, name
+
+class RawServer:
+ __metaclass__ = _RawServerMetaclass
+ def __init__(self, *args, **kwargs):
+ magic.too_late = True
+ self.instance = magic.base(*args, **kwargs)
+
+ def __getattr__(self, name):
+ try:
+ return getattr(self.instance, name)
+ except:
+ raise AttributeError, name
+
diff --git a/BitTorrent/RawServer_twisted.py b/BitTorrent/RawServer_twisted.py
new file mode 100644
index 0000000..53fc000
--- /dev/null
+++ b/BitTorrent/RawServer_twisted.py
@@ -0,0 +1,771 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Greg Hazel
+
+import os
+import sys
+import socket
+import signal
+import struct
+import thread
+import threading
+from cStringIO import StringIO
+from traceback import print_exc, print_stack
+
+from BitTorrent import BTFailure, WARNING, CRITICAL, FAQ_URL
+
+from twisted.python import threadable
+# needed for twisted 1.3, otherwise the thread safe functions are not thread safe
+threadable.init(1)
+
+noSignals = True
+
+if os.name == 'nt':
+ try:
+ from twisted.internet import iocpreactor
+ iocpreactor.proactor.install()
+ noSignals = False
+ except:
+ # just as limited (if not more) as select, and also (supposedly) buggy
+ #try:
+ # from twisted.internet import win32eventreactor
+ # win32eventreactor.install()
+ #except:
+ # pass
+ pass
+else:
+ try:
+ from twisted.internet import kqreactor
+ kqreactor.install()
+ except:
+ try:
+ from twisted.internet import pollreactor
+ pollreactor.install()
+ except:
+ pass
+
+#the default reactor is select-based, and will be install()ed if another has not
+from twisted.internet import reactor, task, error
+
+# as far as I know, we work with twisted 1.3 and >= 2.0
+#import twisted.copyright
+#if twisted.copyright.version.split('.') < 2:
+# raise ImportError(_("RawServer_twisted requires twisted 2.0.0 or greater"))
+
+from twisted.internet.protocol import DatagramProtocol, Protocol, Factory, ClientFactory
+from twisted.protocols.policies import TimeoutMixin
+
+NOLINGER = struct.pack('ii', 1, 0)
+
+class Handler(object):
+
+ # there is only a semantic difference between "made" and "started".
+ # I prefer "started"
+ def connection_started(self, s):
+ self.connection_made(s)
+ def connection_made(self, s):
+ pass
+
+ def connection_lost(self, s):
+ pass
+
+ # Maybe connection_lost should just have a default 'None' exception parameter
+ def connection_failed(self, addr, exception):
+ pass
+
+ def connection_flushed(self, s):
+ pass
+ def data_came_in(self, addr, datagram):
+ pass
+
+class ConnectionWrapper(object):
+ def __init__(self, rawserver, handler, context, tos=0):
+ self.dying = False
+ self.ip = None
+ self.port = None
+ self.transport = None
+ self.reset_timeout = None
+ self.callback_connection = None
+
+ self.post_init(rawserver, handler, context)
+
+ self.tos = tos
+
+ self.buffer = OutputBuffer(self)
+
+ def post_init(self, rawserver, handler, context):
+ self.rawserver = rawserver
+ self.handler = handler
+ self.context = context
+ if self.rawserver:
+ self.rawserver.single_sockets[self] = self
+
+ def get_socket(self):
+ s = None
+ try:
+ s = self.transport.getHandle()
+ except:
+ try:
+ # iocpreactor doesn't implement ISystemHandle like it should
+ s = self.transport.socket
+ except:
+ pass
+ return s
+
+ def attach_transport(self, callback_connection, transport, reset_timeout):
+ self.transport = transport
+ self.callback_connection = callback_connection
+ self.reset_timeout = reset_timeout
+
+ try:
+ address = self.transport.getPeer()
+ except:
+ try:
+ # udp, for example
+ address = self.transport.getHost()
+ except:
+ if not self.transport.__dict__.has_key("state"):
+ self.transport.state = 'NO STATE!'
+ sys.stderr.write('UNKNOWN HOST/PEER: %s:%s:%s\n' % (str(self.transport), str(self.transport.state), str(self.handler)))
+ print_stack()
+ # fallback incase the unknown happens,
+ # there's no use raising an exception
+ address = ('unknown', -1)
+ pass
+
+ try:
+ self.ip = address.host
+ self.port = address.port
+ except:
+ #unix sockets, for example
+ pass
+
+ if self.tos != 0:
+ s = self.get_socket()
+
+ try:
+ s.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, self.tos)
+ except:
+ pass
+
+ def sendto(self, packet, flags, addr):
+ # all this can go away once we pin down the bug
+ if not hasattr(self.transport, "listening"):
+ self.rawserver.errorfunc(WARNING, "UDP port never setup properly when asked to write")
+ elif not self.transport.listening:
+ self.rawserver.errorfunc(WARNING, "UDP port cleaned up already when asked to write")
+
+ ret = None
+ try:
+ ret = self.transport.write(packet, addr)
+ except Exception, e:
+ self.rawserver.errorfunc(WARNING, "UDP sendto failed: %s" % str(e))
+
+ return ret
+
+ def write(self, b):
+ self.buffer.add(b)
+
+ def _flushed(self):
+ s = self
+ #why do you tease me so?
+ if s.handler is not None:
+ #calling flushed from the write is bad form
+ self.rawserver.add_task(s.handler.connection_flushed, 0, (s,))
+
+ def is_flushed(self):
+ return self.buffer.is_flushed()
+
+ def shutdown(self, how):
+ if how == socket.SHUT_WR:
+ self.transport.loseWriteConnection()
+ self.buffer.stopWriting()
+ elif how == socket.SHUT_RD:
+ self.transport.stopListening()
+ else:
+ self.close()
+
+ def close(self):
+ self.buffer.stopWriting()
+
+ if self.rawserver.config['close_with_rst']:
+ try:
+ s = self.get_socket()
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, NOLINGER)
+ except:
+ pass
+
+ if self.rawserver.udp_sockets.has_key(self):
+ # udp connections should only call stopListening
+ self.transport.stopListening()
+ else:
+ self.transport.loseConnection()
+
+ def _cleanup(self):
+
+ self.buffer.connection = None
+ del self.buffer
+
+ self.handler = None
+
+ del self.transport
+
+ if self.callback_connection:
+ if self.callback_connection.can_timeout:
+ self.callback_connection.setTimeout(None)
+ self.callback_connection.connection = None
+ del self.callback_connection
+
+
+
+class OutputBuffer(object):
+
+ def __init__(self, connection):
+ self.connection = connection
+ self.consumer = None
+ self._buffer = StringIO()
+
+ def is_flushed(self):
+ return (self._buffer.tell() == 0)
+
+ def add(self, b):
+ # sometimes we get strings, sometimes we get buffers. ugg.
+ if (isinstance(b, buffer)):
+ b = str(b)
+ self._buffer.write(b)
+
+ if self.consumer is None:
+ self.beginWriting()
+
+ def beginWriting(self):
+ self.stopWriting()
+ self.consumer = self.connection.transport
+ self.consumer.registerProducer(self, False)
+
+ def stopWriting(self):
+ if self.consumer is not None:
+ self.consumer.unregisterProducer()
+ self.consumer = None
+
+ def resumeProducing(self):
+ if self.consumer is None:
+ return
+
+ if self._buffer.tell() > 0:
+ self.consumer.write(self._buffer.getvalue())
+ self._buffer.seek(0)
+ self._buffer.truncate(0)
+ self.connection._flushed()
+ else:
+ self.stopWriting()
+
+
+ def pauseProducing(self):
+ pass
+
+ def stopProducing(self):
+ pass
+
+class CallbackConnection(object):
+
+ def attachTransport(self, transport, connection, *args):
+ s = connection
+ if s is None:
+ s = ConnectionWrapper(*args)
+
+ s.attach_transport(self, transport=transport, reset_timeout=self.optionalResetTimeout)
+ self.connection = s
+
+ def connectionMade(self):
+ s = self.connection
+ s.handler.connection_started(s)
+ self.optionalResetTimeout()
+
+ def connectionLost(self, reason):
+ reactor.callLater(0, self.post_connectionLost, reason)
+
+ #twisted api inconsistancy workaround
+ #sometimes connectionLost is called (not fired) from inside write()
+ def post_connectionLost(self, reason):
+ #print "Connection Lost", str(reason).split(":")[-1]
+ #hack to try and dig up the connection if one was ever made
+ if not self.__dict__.has_key("connection"):
+ self.connection = self.factory.connection
+ if self.connection is not None:
+ self.factory.rawserver._remove_socket(self.connection)
+
+ def dataReceived(self, data):
+ self.optionalResetTimeout()
+
+ s = self.connection
+ s.rawserver._make_wrapped_call(s.handler.data_came_in,
+ (s, data), s)
+
+ def datagramReceived(self, data, (host, port)):
+ s = self.connection
+ s.rawserver._make_wrapped_call(s.handler.data_came_in,
+ ((host, port), data), s)
+
+ def connectionRefused(self):
+ s = self.connection
+ dns = (s.ip, s.port)
+ reason = _("connection refused")
+
+ #print "Connection Refused"
+
+ if not s.dying:
+ # this might not work - reason is not an exception
+ s.handler.connection_failed(dns, reason)
+
+ s.dying = True
+
+ s.rawserver._remove_socket(s)
+
+ def optionalResetTimeout(self):
+ if self.can_timeout:
+ self.resetTimeout()
+
+class CallbackProtocol(CallbackConnection, TimeoutMixin, Protocol):
+
+ def makeConnection(self, transport):
+ if isinstance(self.factory, OutgoingConnectionFactory):
+ self.factory.rawserver._remove_pending_connection(self.factory.addr)
+ self.can_timeout = 1
+ self.setTimeout(self.factory.rawserver.config['socket_timeout'])
+ self.attachTransport(transport, self.factory.connection, *self.factory.connection_args)
+ Protocol.makeConnection(self, transport)
+
+class CallbackDatagramProtocol(CallbackConnection, DatagramProtocol):
+
+ def startProtocol(self):
+ self.can_timeout = 0
+ self.attachTransport(self.transport, self.connection, ())
+ DatagramProtocol.startProtocol(self)
+
+ def connectionRefused(self):
+ # we don't use these at all for udp, so skip the CallbackConnection
+ DatagramProtocol.connectionRefused(self)
+
+class OutgoingConnectionFactory(ClientFactory):
+
+ def clientConnectionFailed(self, connector, reason):
+ #print "Client connection failed", str(reason).split(":")[-1]
+ peer = connector.getDestination()
+ dns = (peer.host, peer.port)
+
+ s = self.connection
+ # opt-out
+ if not s.dying:
+ # this might not work - reason is not an exception
+ s.handler.connection_failed(dns, reason)
+
+ s.dying = True
+
+ self.rawserver._remove_pending_connection(peer.host)
+ self.rawserver._remove_socket(self.connection)
+
+def UnimplementedWarning(msg):
+ #ok, I think people get the message
+ #print "UnimplementedWarning: " + str(msg)
+ pass
+
+#Encoder calls stop_listening(socket) then socket.close()
+#to us they mean the same thing, so swallow the second call
+class CloseSwallower:
+ def close(self):
+ pass
+
+#storage for socket creation requestions, and proxy once the connection is made
+class SocketProxy(object):
+ def __init__(self, port, bind, reuse, tos, protocol):
+ self.port = port
+ self.bind = bind
+ self.reuse = reuse
+ self.tos = tos
+ self.protocol = protocol
+ self.connection = None
+
+ def __getattr__(self, name):
+ try:
+ return getattr(self.connection, name)
+ except:
+ raise AttributeError, name
+
+def default_error_handler(level, message):
+ print message
+
+class RawServerMixin(object):
+
+ def __init__(self, doneflag, config, noisy=True,
+ errorfunc=default_error_handler, tos=0):
+ self.doneflag = doneflag
+ self.noisy = noisy
+ self.errorfunc = errorfunc
+ self.config = config
+ self.tos = tos
+ self.ident = thread.get_ident()
+
+ def _make_wrapped_call(self, function, args, wrapper=None, context=None):
+ try:
+ function(*args)
+ except KeyboardInterrupt:
+ raise
+ except Exception, e: # hopefully nothing raises strings
+ # Incoming sockets can be assigned to a particular torrent during
+ # a data_came_in call, and it's possible (though not likely) that
+ # there could be a torrent-specific exception during the same call.
+ # Therefore read the context after the call.
+ if wrapper is not None:
+ context = wrapper.context
+ if self.noisy and context is None:
+ data = StringIO()
+ print_exc(file=data)
+ data.seek(-1)
+ self.errorfunc(CRITICAL, data.read())
+ if context is not None:
+ context.got_exception(e)
+
+ # must be called from the main thread
+ def install_sigint_handler(self):
+ signal.signal(signal.SIGINT, self._handler)
+
+ def _handler(self, signum, frame):
+ self.external_add_task(self.doneflag.set, 0)
+ # Allow pressing ctrl-c multiple times to raise KeyboardInterrupt,
+ # in case the program is in an infinite loop
+ signal.signal(signal.SIGINT, signal.default_int_handler)
+
+def _sl(x):
+ if hasattr(x, "__len__"):
+ return str(len(x))
+ else:
+ return str(x)
+
+class RawServer(RawServerMixin):
+
+ def __init__(self, doneflag, config, noisy=True,
+ errorfunc=default_error_handler, tos=0):
+ RawServerMixin.__init__(self, doneflag, config, noisy, errorfunc, tos)
+
+ self.listening_handlers = {}
+ self.single_sockets = {}
+ self.udp_sockets = {}
+ self.live_contexts = {None : 1}
+ self.listened = 0
+
+ # for connection rate limiting
+ self.pending_sockets = {}
+ # this can go away when urllib does
+ self.pending_sockets_lock = threading.Lock()
+
+ #l2 = task.LoopingCall(self._print_connection_count)
+ #l2.start(10)
+
+ def _log(self, msg):
+ f = open("connections.txt", "a")
+ print str(msg)
+ f.write(str(msg) + "\n")
+ f.close()
+
+ def _print_connection_count(self):
+ c = len(self.single_sockets)
+ u = len(self.udp_sockets)
+ c -= u
+ #s = "Connections(" + str(id(self)) + "): tcp(" + str(c) + ") upd(" + str(u) + ")"
+ #self._log(s)
+
+ d = dict()
+ for s in self.single_sockets:
+ state = "None"
+ if not s.dying and s.transport:
+ try:
+ state = s.transport.state
+ except:
+ state = "has transport"
+ else:
+ state = "No transport"
+ if not d.has_key(state):
+ d[state] = 0
+ d[state] += 1
+ self._log(d)
+
+ sizes = "ps(" + _sl(self.pending_sockets)
+ sizes += ") lh(" + _sl(self.listening_handlers)
+ sizes += ") ss(" + _sl(self.single_sockets)
+ sizes += ") us(" + _sl(self.udp_sockets)
+ sizes += ") lc(" + _sl(self.live_contexts) + ")"
+ self._log(sizes)
+
+ def add_context(self, context):
+ self.live_contexts[context] = 1
+
+ def remove_context(self, context):
+ del self.live_contexts[context]
+
+ def autoprune(self, f, *a, **kw):
+ if self.live_contexts.has_key(kw['context']):
+ f(*a, **kw)
+
+ def add_task(self, func, delay, args=(), context=None):
+ assert thread.get_ident() == self.ident
+ assert type(args) == list or type(args) == tuple
+
+ #we're going to check again later anyway
+ #if self.live_contexts.has_key(context):
+ reactor.callLater(delay, self.autoprune, self._make_wrapped_call,
+ func, args, context=context)
+
+ def external_add_task(self, func, delay, args=(), context=None):
+ assert type(args) == list or type(args) == tuple
+ reactor.callFromThread(self.add_task, func, delay, args, context)
+
+ def create_unixserversocket(filename):
+ s = SocketProxy(0, filename, True, 0, 'tcp')
+ s.factory = Factory()
+
+ if s.reuse == False:
+ UnimplementedWarning(_("You asked for reuse to be off when binding. Sorry, I can't do that."))
+
+ listening_port = reactor.listenUNIX(s.bind, s.factory)
+ listening_port.listening = 1
+ s.listening_port = listening_port
+
+ return s
+ create_unixserversocket = staticmethod(create_unixserversocket)
+
+ def create_serversocket(port, bind='', reuse=False, tos=0):
+ s = SocketProxy(port, bind, reuse, tos, 'tcp')
+ s.factory = Factory()
+
+ if s.reuse == False:
+ UnimplementedWarning(_("You asked for reuse to be off when binding. Sorry, I can't do that."))
+
+ try:
+ listening_port = reactor.listenTCP(s.port, s.factory, interface=s.bind)
+ except error.CannotListenError, e:
+ if e[0] != 0:
+ raise e.socketError
+ else:
+ raise
+ listening_port.listening = 1
+ s.listening_port = listening_port
+
+ return s
+ create_serversocket = staticmethod(create_serversocket)
+
+ def create_udpsocket(port, bind='', reuse=False, tos=0):
+ s = SocketProxy(port, bind, reuse, tos, 'udp')
+ s.protocol = CallbackDatagramProtocol()
+ c = ConnectionWrapper(None, None, None, tos)
+ s.connection = c
+ s.protocol.connection = c
+
+ if s.reuse == False:
+ UnimplementedWarning(_("You asked for reuse to be off when binding. Sorry, I can't do that."))
+
+ try:
+ listening_port = reactor.listenUDP(s.port, s.protocol, interface=s.bind)
+ except error.CannotListenError, e:
+ raise e.socketError
+ listening_port.listening = 1
+ s.listening_port = listening_port
+
+ return s
+ create_udpsocket = staticmethod(create_udpsocket)
+
+ def create_multicastsocket(port, bind='', reuse=False, tos=0):
+ s = SocketProxy(port, bind, reuse, tos, 'udp')
+ s.protocol = CallbackDatagramProtocol()
+ c = ConnectionWrapper(None, None, None, tos)
+ s.connection = c
+ s.protocol.connection = c
+
+ if s.reuse == False:
+ UnimplementedWarning("You asked for reuse to be off when binding. Sorry, I can't do that.")
+
+ try:
+ listening_port = reactor.listenMulticast(s.port, s.protocol, interface=s.bind)
+ except error.CannotListenError, e:
+ raise e.socketError
+ listening_port.listening = 1
+ s.listening_port = listening_port
+
+ return s
+ create_multicastsocket = staticmethod(create_multicastsocket)
+
+ def start_listening(self, serversocket, handler, context=None):
+ s = serversocket
+ s.factory.rawserver = self
+ s.factory.protocol = CallbackProtocol
+ s.factory.connection = None
+ s.factory.connection_args = (self, handler, context, serversocket.tos)
+
+ if not s.listening_port.listening:
+ s.listening_port.startListening()
+ s.listening_port.listening = 1
+
+ self.listening_handlers[s] = s.listening_port
+
+ #provides a harmless close() method
+ s.connection = CloseSwallower()
+
+ def start_listening_udp(self, serversocket, handler, context=None):
+ s = serversocket
+
+ c = s.connection
+ c.post_init(self, handler, context)
+
+ if not s.listening_port.listening:
+ s.listening_port.startListening()
+ s.listening_port.listening = 1
+
+ self.listening_handlers[serversocket] = s.listening_port
+
+ self.udp_sockets[c] = c
+
+ def start_listening_multicast(self, serversocket, handler, context=None):
+ s = serversocket
+
+ c = s.connection
+ c.post_init(self, handler, context)
+
+ if not s.listening_port.listening:
+ s.listening_port.startListening()
+ s.listening_port.listening = 1
+
+ self.listening_handlers[serversocket] = s.listening_port
+
+ self.udp_sockets[c] = c
+
+ def stop_listening(self, serversocket):
+ listening_port = self.listening_handlers[serversocket]
+ try:
+ listening_port.stopListening()
+ listening_port.listening = 0
+ except error.NotListeningError:
+ pass
+ del self.listening_handlers[serversocket]
+
+ def stop_listening_udp(self, serversocket):
+ listening_port = self.listening_handlers[serversocket]
+ listening_port.stopListening()
+ del self.listening_handlers[serversocket]
+ del self.udp_sockets[serversocket.connection]
+ del self.single_sockets[serversocket.connection]
+
+ def stop_listening_multicast(self, serversocket):
+ self.stop_listening_udp(serversocket)
+
+ def start_connection(self, dns, handler, context=None, do_bind=True):
+ addr = dns[0]
+ port = int(dns[1])
+
+ self._add_pending_connection(addr)
+
+ bindaddr = None
+ if do_bind:
+ bindaddr = self.config['bind']
+ if bindaddr and len(bindaddr) >= 0:
+ bindaddr = (bindaddr, 0)
+ else:
+ bindaddr = None
+
+ factory = OutgoingConnectionFactory()
+ # maybe this can be had from elsewhere
+ factory.addr = addr
+ factory.protocol = CallbackProtocol
+ factory.rawserver = self
+
+ c = ConnectionWrapper(self, handler, context, self.tos)
+
+ factory.connection = c
+ factory.connection_args = ()
+
+ connector = reactor.connectTCP(addr, port, factory, bindAddress=bindaddr)
+
+ self.single_sockets[c] = c
+ return c
+
+ def _add_pending_connection(self, addr):
+ # the XP connection rate limiting is unique at the IP level
+ assert isinstance(addr, str)
+ self.pending_sockets_lock.acquire()
+ self.__add_pending_connection(addr)
+ self.pending_sockets_lock.release()
+
+ def __add_pending_connection(self, addr):
+ if addr not in self.pending_sockets:
+ self.pending_sockets[addr] = 1
+ else:
+ self.pending_sockets[addr] += 1
+
+ def _remove_pending_connection(self, addr):
+ self.pending_sockets_lock.acquire()
+ self.__remove_pending_connection(addr)
+ self.pending_sockets_lock.release()
+
+ def __remove_pending_connection(self, addr):
+ self.pending_sockets[addr] -= 1
+ if self.pending_sockets[addr] <= 0:
+ del self.pending_sockets[addr]
+
+ def async_start_connection(self, dns, handler, context=None, do_bind=True):
+
+ # the XP connection rate limiting is unique at the IP level
+ addr = dns[0]
+ if (len(self.pending_sockets) >= self.config['max_incomplete'] and
+ addr not in self.pending_sockets):
+ return False
+
+ self.start_connection(dns, handler, context, do_bind)
+ return True
+
+
+ def listen_forever(self):
+ self.ident = thread.get_ident()
+ if self.listened:
+ UnimplementedWarning(_("listen_forever() should only be called once per reactor."))
+ self.listened = 1
+
+ l = task.LoopingCall(self.stop)
+ l.start(1)#, now = False)
+
+ if noSignals:
+ reactor.run(installSignalHandlers=False)
+ else:
+ reactor.run()
+
+ def listen_once(self, period=1e9):
+ UnimplementedWarning(_("listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."))
+ reactor.iterate(period)
+
+ def stop(self):
+ if (self.doneflag.isSet()):
+
+ for connection in self.single_sockets.values():
+ try:
+ #I think this still sends all the data
+ connection.close()
+ except:
+ pass
+
+ reactor.suggestThreadPoolSize(0)
+ reactor.stop()
+
+ def _remove_socket(self, s):
+ # opt-out
+ if not s.dying:
+ self._make_wrapped_call(s.handler.connection_lost, (s,), s)
+
+ s._cleanup()
+
+ del self.single_sockets[s]
+ \ No newline at end of file
diff --git a/BitTorrent/Rerequester.py b/BitTorrent/Rerequester.py
new file mode 100644
index 0000000..93d9472
--- /dev/null
+++ b/BitTorrent/Rerequester.py
@@ -0,0 +1,293 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala
+
+from threading import Thread
+from socket import error, gethostbyname
+from random import random, randrange
+from binascii import b2a_hex
+
+from BitTorrent import version
+from BitTorrent.platform import bttime
+from BitTorrent.zurllib import urlopen, quote, Request
+from BitTorrent.btformats import check_peers
+from BitTorrent.bencode import bencode, bdecode
+from BitTorrent import BTFailure, INFO, WARNING, ERROR, CRITICAL
+
+
+class Rerequester(object):
+
+ def __init__(self, url, config, sched, howmany, connect, externalsched,
+ amount_left, up, down, port, myid, infohash, errorfunc, doneflag,
+ upratefunc, downratefunc, ever_got_incoming, diefunc, sfunc):
+ self.baseurl = url
+ self.infohash = infohash
+ self.peerid = None
+ self.wanted_peerid = myid
+ self.port = port
+ self.url = None
+ self.config = config
+ self.last = None
+ self.trackerid = None
+ self.announce_interval = 30 * 60
+ self.sched = sched
+ self.howmany = howmany
+ self.connect = connect
+ self.externalsched = externalsched
+ self.amount_left = amount_left
+ self.up = up
+ self.down = down
+ self.errorfunc = errorfunc
+ self.doneflag = doneflag
+ self.upratefunc = upratefunc
+ self.downratefunc = downratefunc
+ self.ever_got_incoming = ever_got_incoming
+ self.diefunc = diefunc
+ self.successfunc = sfunc
+ self.finish = False
+ self.current_started = None
+ self.fail_wait = None
+ self.last_time = None
+ self.previous_down = 0
+ self.previous_up = 0
+ self.tracker_num_peers = None
+ self.tracker_num_seeds = None
+
+ def _makeurl(self, peerid, port):
+ return ('%s?info_hash=%s&peer_id=%s&port=%s&key=%s' %
+ (self.baseurl, quote(self.infohash), quote(peerid), str(port),
+ b2a_hex(''.join([chr(randrange(256)) for i in xrange(4)]))))
+
+ def change_port(self, peerid, port):
+ self.wanted_peerid = peerid
+ self.port = port
+ self.last = None
+ self.trackerid = None
+ self._check()
+
+ def begin(self):
+ if self.sched:
+ self.sched(self.begin, 60)
+ self._check()
+
+ def announce_finish(self):
+ self.finish = True
+ self._check()
+
+ def announce_stop(self):
+ self._announce(2)
+
+ def _check(self):
+ if self.current_started is not None:
+ if self.current_started <= bttime() - 58:
+ self.errorfunc(WARNING,
+ _("Tracker announce still not complete "
+ "%d seconds after starting it") %
+ int(bttime() - self.current_started))
+ return
+ if self.peerid is None:
+ self.peerid = self.wanted_peerid
+ self.url = self._makeurl(self.peerid, self.port)
+ self._announce(0)
+ return
+ if self.peerid != self.wanted_peerid:
+ self._announce(2)
+ self.peerid = None
+ self.previous_up = self.up()
+ self.previous_down = self.down()
+ return
+ if self.finish:
+ self.finish = False
+ self._announce(1)
+ return
+ if self.fail_wait is not None:
+ if self.last_time + self.fail_wait <= bttime():
+ self._announce()
+ return
+ if self.last_time > bttime() - self.config['rerequest_interval']:
+ return
+ if self.ever_got_incoming():
+ getmore = self.howmany() <= self.config['min_peers'] / 3
+ else:
+ getmore = self.howmany() < self.config['min_peers']
+ if getmore or bttime() - self.last_time > self.announce_interval:
+ self._announce()
+
+ def _announce(self, event=None):
+ self.current_started = bttime()
+ s = ('%s&uploaded=%s&downloaded=%s&left=%s' %
+ (self.url, str(self.up() - self.previous_up),
+ str(self.down() - self.previous_down), str(self.amount_left())))
+ if self.last is not None:
+ s += '&last=' + quote(str(self.last))
+ if self.trackerid is not None:
+ s += '&trackerid=' + quote(str(self.trackerid))
+ if self.howmany() >= self.config['max_initiate']:
+ s += '&numwant=0'
+ else:
+ s += '&compact=1'
+ if event is not None:
+ s += '&event=' + ['started', 'completed', 'stopped'][event]
+ t = Thread(target=self._rerequest, args=[s, self.peerid])
+ t.setDaemon(True)
+ t.start()
+
+ # Must destroy all references that could cause reference circles
+ def cleanup(self):
+ self.sched = None
+ self.howmany = None
+ self.connect = None
+ self.externalsched = lambda *args: None
+ self.amount_left = None
+ self.up = None
+ self.down = None
+ self.errorfunc = None
+ self.upratefunc = None
+ self.downratefunc = None
+ self.ever_got_incoming = None
+ self.diefunc = None
+ self.successfunc = None
+
+ def _rerequest(self, url, peerid):
+ if self.config['ip']:
+ try:
+ url += '&ip=' + gethostbyname(self.config['ip'])
+ except Exception, e:
+ self.errorfunc(WARNING, _("Problem connecting to tracker, gethostbyname failed - ") + str(e))
+ request = Request(url)
+ request.add_header('User-Agent', 'BitTorrent/' + version)
+ if self.config['tracker_proxy']:
+ request.set_proxy(self.config['tracker_proxy'], 'http')
+ try:
+ h = urlopen(request)
+ data = h.read()
+ h.close()
+ # urllib2 can raise various crap that doesn't have a common base
+ # exception class especially when proxies are used, at least
+ # ValueError and stuff from httplib
+ except Exception, e:
+ def f(r=_("Problem connecting to tracker - ") + str(e)):
+ self._postrequest(errormsg=r, peerid=peerid)
+ else:
+ def f():
+ self._postrequest(data, peerid=peerid)
+ self.externalsched(f, 0)
+
+ def _fail(self):
+ if self.fail_wait is None:
+ self.fail_wait = 50
+ else:
+ self.fail_wait *= 1.4 + random() * .2
+ self.fail_wait = min(self.fail_wait,
+ self.config['max_announce_retry_interval'])
+
+ def _postrequest(self, data=None, errormsg=None, peerid=None):
+ self.current_started = None
+ self.last_time = bttime()
+ if errormsg is not None:
+ self.errorfunc(WARNING, errormsg)
+ self._fail()
+ return
+ try:
+ r = bdecode(data)
+ check_peers(r)
+ except BTFailure, e:
+ if data != '':
+ self.errorfunc(ERROR, _("bad data from tracker - ") + str(e))
+ self._fail()
+ return
+ if type(r.get('complete')) in (int, long) and \
+ type(r.get('incomplete')) in (int, long):
+ self.tracker_num_seeds = r['complete']
+ self.tracker_num_peers = r['incomplete']
+ else:
+ self.tracker_num_seeds = self.tracker_num_peers = None
+ if r.has_key('failure reason'):
+ if self.howmany() > 0:
+ self.errorfunc(ERROR, _("rejected by tracker - ") +
+ r['failure reason'])
+ else:
+ # sched shouldn't be strictly necessary
+ def die():
+ self.diefunc(CRITICAL,
+ _("Aborting the torrent as it was rejected by "
+ "the tracker while not connected to any peers. ") +
+ _(" Message from the tracker: ") + r['failure reason'])
+ self.sched(die, 0)
+ self._fail()
+ else:
+ self.fail_wait = None
+ if r.has_key('warning message'):
+ self.errorfunc(ERROR, _("warning from tracker - ") +
+ r['warning message'])
+ self.announce_interval = r.get('interval', self.announce_interval)
+ self.config['rerequest_interval'] = r.get('min interval',
+ self.config['rerequest_interval'])
+ self.trackerid = r.get('tracker id', self.trackerid)
+ self.last = r.get('last')
+ p = r['peers']
+ peers = []
+ if type(p) == str:
+ for x in xrange(0, len(p), 6):
+ ip = '.'.join([str(ord(i)) for i in p[x:x+4]])
+ port = (ord(p[x+4]) << 8) | ord(p[x+5])
+ peers.append((ip, port, None))
+ else:
+ for x in p:
+ peers.append((x['ip'], x['port'], x.get('peer id')))
+ ps = len(peers) + self.howmany()
+ if ps < self.config['max_initiate']:
+ if self.doneflag.isSet():
+ if r.get('num peers', 1000) - r.get('done peers', 0) > ps * 1.2:
+ self.last = None
+ else:
+ if r.get('num peers', 1000) > ps * 1.2:
+ self.last = None
+ for x in peers:
+ self.connect((x[0], x[1]), x[2])
+ if peerid == self.wanted_peerid:
+ self.successfunc()
+ self._check()
+
+class DHTRerequester(Rerequester):
+ def __init__(self, config, sched, howmany, connect, externalsched,
+ amount_left, up, down, port, myid, infohash, errorfunc, doneflag,
+ upratefunc, downratefunc, ever_got_incoming, diefunc, sfunc, dht):
+ self.dht = dht
+ Rerequester.__init__(self, "http://localhost/announce", config, sched, howmany, connect, externalsched,
+ amount_left, up, down, port, myid, infohash, errorfunc, doneflag,
+ upratefunc, downratefunc, ever_got_incoming, diefunc, sfunc)
+
+ def _announce(self, event=None):
+ self.current_started = bttime()
+ self._rerequest("", self.peerid)
+
+ def _rerequest(self, url, peerid):
+ self.peers = ""
+ try:
+ self.dht.getPeersAndAnnounce(self.infohash, self.port, self._got_peers)
+ except Exception, e:
+ self._postrequest(errormsg=_("Trackerless lookup failed: ") + str(e), peerid=self.wanted_peerid)
+
+ def _got_peers(self, peers):
+ if not self.howmany:
+ return
+ if not peers:
+ self._postrequest(bencode({'peers':''}), peerid=self.wanted_peerid)
+ else:
+ self._postrequest(bencode({'peers':peers[0]}), peerid=None)
+
+ def _announced_peers(self, nodes):
+ pass
+
+ def announce_stop(self):
+ # don't do anything
+ pass
diff --git a/BitTorrent/StatusLight.py b/BitTorrent/StatusLight.py
new file mode 100644
index 0000000..11cbf14
--- /dev/null
+++ b/BitTorrent/StatusLight.py
@@ -0,0 +1,108 @@
+from BitTorrent.platform import bttime
+
+class StatusLight(object):
+
+ initial_state = 'stopped'
+
+ states = {
+ # state : (stock icon name, tool tip),
+ 'stopped' : ('bt-status-stopped',
+ _("Paused")),
+ 'empty' : ('bt-status-stopped',
+ _("No torrents")),
+ 'starting' : ('bt-status-starting',
+ _("Starting download")),
+ 'pre-natted': ('bt-status-pre-natted',
+ _("Starting download")),
+ 'running' : ('bt-status-running',
+ _("Running normally")),
+ 'natted' : ('bt-status-natted',
+ _("Downloads may be slow:\nProbably firewalled/NATted")),
+ 'broken' : ('bt-status-broken',
+ _("Check network connection")),
+ }
+
+ messages = {
+ # message : default new state,
+ 'stop' : 'stopped' ,
+ 'empty' : 'empty' ,
+ 'start' : 'starting' ,
+ 'seen_peers' : 'pre-natted',
+ 'seen_remote_peers' : 'running' ,
+ 'broken' : 'broken' ,
+ }
+
+ transitions = {
+ # state : { message : custom new state, },
+ 'pre-natted' : { 'start' : 'pre-natted',
+ 'seen_peers' : 'pre-natted',},
+ 'running' : { 'start' : 'running' ,
+ 'seen_peers' : 'running' ,},
+ 'natted' : { 'start' : 'natted' ,
+ 'seen_peers' : 'natted' ,},
+ 'broken' : { 'start' : 'broken' ,},
+ #TODO: add broken transitions
+ }
+
+ time_to_nat = 60 * 5 # 5 minutes
+
+ def __init__(self):
+ self.mystate = self.initial_state
+ self.start_time = None
+
+ def send_message(self, message):
+ if message not in self.messages.keys():
+ #print 'bad message', message
+ return
+ new_state = self.messages[message]
+ if self.transitions.has_key(self.mystate):
+ if self.transitions[self.mystate].has_key(message):
+ new_state = self.transitions[self.mystate][message]
+
+ # special pre-natted timeout logic
+ if new_state == 'pre-natted':
+ if (self.mystate == 'pre-natted' and
+ bttime() - self.start_time > self.time_to_nat):
+ # go to natted state after a while
+ new_state = 'natted'
+ elif self.mystate != 'pre-natted':
+ # start pre-natted timer
+ self.start_time = bttime()
+
+ if new_state != self.mystate:
+ #print 'changing state from', self.mystate, 'to', new_state
+ self.mystate = new_state
+ self.change_state()
+
+ def change_state(self):
+ pass
+
+
+import gtk
+
+class GtkStatusLight(gtk.EventBox, StatusLight):
+
+ def __init__(self, main):
+ gtk.EventBox.__init__(self)
+ StatusLight.__init__(self)
+ self.main = main
+ self.image = None
+ self.images = {}
+ for k,(s,t) in self.states.items():
+ i = gtk.Image()
+ i.set_from_stock(s, gtk.ICON_SIZE_LARGE_TOOLBAR)
+ i.show()
+ self.images[k] = i
+ self.set_size_request(24,24)
+ self.main.tooltips.set_tip(self, 'tooltip')
+ self.send_message('stop')
+
+ def change_state(self):
+ state = self.mystate
+ assert self.states.has_key(state)
+ if self.image is not None:
+ self.remove(self.image)
+ self.image = self.images[state]
+ self.add(self.image)
+ stock, tooltip = self.states[state]
+ self.main.tooltips.set_tip(self, tooltip)
diff --git a/BitTorrent/Storage.py b/BitTorrent/Storage.py
new file mode 100644
index 0000000..197fdef
--- /dev/null
+++ b/BitTorrent/Storage.py
@@ -0,0 +1,276 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+import os
+from bisect import bisect_right
+from array import array
+
+from BitTorrent.obsoletepythonsupport import *
+
+from BitTorrent import BTFailure, app_name
+
+
+class FilePool(object):
+
+ def __init__(self, max_files_open):
+ self.allfiles = {}
+ self.handlebuffer = None
+ self.handles = {}
+ self.whandles = {}
+ self.set_max_files_open(max_files_open)
+
+ def close_all(self):
+ failures = {}
+ for filename, handle in self.handles.iteritems():
+ try:
+ handle.close()
+ except Exception, e:
+ failures[self.allfiles[filename]] = e
+ self.handles.clear()
+ self.whandles.clear()
+ if self.handlebuffer is not None:
+ del self.handlebuffer[:]
+ for torrent, e in failures.iteritems():
+ torrent.got_exception(e)
+
+ def set_max_files_open(self, max_files_open):
+ if max_files_open <= 0:
+ max_files_open = 1e100
+ self.max_files_open = max_files_open
+ self.close_all()
+ if len(self.allfiles) > self.max_files_open:
+ self.handlebuffer = []
+ else:
+ self.handlebuffer = None
+
+ def add_files(self, files, torrent):
+ for filename in files:
+ if filename in self.allfiles:
+ raise BTFailure(_("File %s belongs to another running torrent")
+ % filename)
+ for filename in files:
+ self.allfiles[filename] = torrent
+ if self.handlebuffer is None and \
+ len(self.allfiles) > self.max_files_open:
+ self.handlebuffer = self.handles.keys()
+
+ def remove_files(self, files):
+ for filename in files:
+ del self.allfiles[filename]
+ if self.handlebuffer is not None and \
+ len(self.allfiles) <= self.max_files_open:
+ self.handlebuffer = None
+
+
+# Make this a separate function because having this code in Storage.__init__()
+# would make python print a SyntaxWarning (uses builtin 'file' before 'global')
+
+def bad_libc_workaround():
+ global file
+ def file(name, mode = 'r', buffering = None):
+ return open(name, mode)
+
+class Storage(object):
+
+ def __init__(self, config, filepool, files, check_only=False):
+ self.filepool = filepool
+ self.config = config
+ self.ranges = []
+ self.myfiles = {}
+ self.tops = {}
+ self.undownloaded = {}
+ self.unallocated = {}
+ total = 0
+ for filename, length in files:
+ self.unallocated[filename] = length
+ self.undownloaded[filename] = length
+ if length > 0:
+ self.ranges.append((total, total + length, filename))
+ self.myfiles[filename] = None
+ total += length
+ if os.path.exists(filename):
+ if not os.path.isfile(filename):
+ raise BTFailure(_("File %s already exists, but is not a "
+ "regular file") % filename)
+ l = os.path.getsize(filename)
+ if l > length and not check_only:
+ h = file(filename, 'rb+')
+ h.truncate(length)
+ h.close()
+ l = length
+ self.tops[filename] = l
+ elif not check_only:
+ f = os.path.split(filename)[0]
+ if f != '' and not os.path.exists(f):
+ os.makedirs(f)
+ file(filename, 'wb').close()
+ self.begins = [i[0] for i in self.ranges]
+ self.total_length = total
+ if check_only:
+ return
+ self.handles = filepool.handles
+ self.whandles = filepool.whandles
+
+ # Rather implement this as an ugly hack here than change all the
+ # individual calls. Affects all torrent instances using this module.
+ if config['bad_libc_workaround']:
+ bad_libc_workaround()
+
+ def was_preallocated(self, pos, length):
+ for filename, begin, end in self._intervals(pos, length):
+ if self.tops.get(filename, 0) < end:
+ return False
+ return True
+
+ def get_total_length(self):
+ return self.total_length
+
+ def _intervals(self, pos, amount):
+ r = []
+ stop = pos + amount
+ p = bisect_right(self.begins, pos) - 1
+ while p < len(self.ranges) and self.ranges[p][0] < stop:
+ begin, end, filename = self.ranges[p]
+ r.append((filename, max(pos, begin) - begin, min(end, stop) - begin))
+ p += 1
+ return r
+
+ def _get_file_handle(self, filename, for_write):
+ handlebuffer = self.filepool.handlebuffer
+ if filename in self.handles:
+ if for_write and filename not in self.whandles:
+ self.handles[filename].close()
+ self.handles[filename] = file(filename, 'rb+', 0)
+ self.whandles[filename] = None
+ if handlebuffer is not None and handlebuffer[-1] != filename:
+ handlebuffer.remove(filename)
+ handlebuffer.append(filename)
+ else:
+ if for_write:
+ self.handles[filename] = file(filename, 'rb+', 0)
+ self.whandles[filename] = None
+ else:
+ self.handles[filename] = file(filename, 'rb', 0)
+ if handlebuffer is not None:
+ if len(handlebuffer) >= self.filepool.max_files_open:
+ oldfile = handlebuffer.pop(0)
+ if oldfile in self.whandles: # .pop() in python 2.3
+ del self.whandles[oldfile]
+ self.handles[oldfile].close()
+ del self.handles[oldfile]
+ handlebuffer.append(filename)
+ return self.handles[filename]
+
+ def read(self, pos, amount):
+ r = []
+ for filename, pos, end in self._intervals(pos, amount):
+ h = self._get_file_handle(filename, False)
+ h.seek(pos)
+ r.append(h.read(end - pos))
+ r = ''.join(r)
+ if len(r) != amount:
+ raise BTFailure(_("Short read - something truncated files?"))
+ return r
+
+ def write(self, pos, s):
+ # might raise an IOError
+ total = 0
+ for filename, begin, end in self._intervals(pos, len(s)):
+ h = self._get_file_handle(filename, True)
+ h.seek(begin)
+ h.write(s[total: total + end - begin])
+ total += end - begin
+
+ def close(self):
+ error = None
+ for filename in self.handles.keys():
+ if filename in self.myfiles:
+ try:
+ self.handles[filename].close()
+ except Exception, e:
+ error = e
+ del self.handles[filename]
+ if filename in self.whandles:
+ del self.whandles[filename]
+ handlebuffer = self.filepool.handlebuffer
+ if handlebuffer is not None:
+ handlebuffer = [f for f in handlebuffer if f not in self.myfiles]
+ self.filepool.handlebuffer = handlebuffer
+ if error is not None:
+ raise error
+
+ def write_fastresume(self, resumefile, amount_done):
+ resumefile.write('BitTorrent resume state file, version 1\n')
+ resumefile.write(str(amount_done) + '\n')
+ for x, x, filename in self.ranges:
+ resumefile.write(str(os.path.getsize(filename)) + ' ' +
+ str(os.path.getmtime(filename)) + '\n')
+
+ def check_fastresume(self, resumefile, return_filelist=False,
+ piece_size=None, numpieces=None, allfiles=None):
+ filenames = [name for x, x, name in self.ranges]
+ if resumefile is not None:
+ version = resumefile.readline()
+ if version != 'BitTorrent resume state file, version 1\n':
+ raise BTFailure(_("Unsupported fastresume file format, "
+ "maybe from another client version?"))
+ amount_done = int(resumefile.readline())
+ else:
+ amount_done = size = mtime = 0
+ for filename in filenames:
+ if resumefile is not None:
+ line = resumefile.readline()
+ size, mtime = line.split()[:2] # allow adding extra fields
+ size = int(size)
+ mtime = int(mtime)
+ if os.path.exists(filename):
+ fsize = os.path.getsize(filename)
+ else:
+ raise BTFailure(_("Another program appears to have moved, renamed, or deleted the file, "
+ "or %s may have crashed last time it was run.") % app_name)
+ if fsize > 0 and mtime != os.path.getmtime(filename):
+ raise BTFailure(_("Another program appears to have modified the file, "
+ "or %s may have crashed last time it was run.") % app_name)
+ if size != fsize:
+ raise BTFailure(_("Another program appears to have changed the file size, "
+ "or %s may have crashed last time it was run.") % app_name)
+ if not return_filelist:
+ return amount_done
+ if resumefile is None:
+ return None
+ if numpieces < 32768:
+ typecode = 'h'
+ else:
+ typecode = 'l'
+ try:
+ r = array(typecode)
+ r.fromfile(resumefile, numpieces)
+ except Exception, e:
+ raise BTFailure(_("Couldn't read fastresume data: ") + str(e) + '.')
+ for i in range(numpieces):
+ if r[i] >= 0:
+ # last piece goes "past the end", doesn't matter
+ self.downloaded(r[i] * piece_size, piece_size)
+ if r[i] != -2:
+ self.allocated(i * piece_size, piece_size)
+ undl = self.undownloaded
+ unal = self.unallocated
+ return amount_done, [undl[x] for x in allfiles], \
+ [not unal[x] for x in allfiles]
+
+ def allocated(self, pos, length):
+ for filename, begin, end in self._intervals(pos, length):
+ self.unallocated[filename] -= end - begin
+
+ def downloaded(self, pos, length):
+ for filename, begin, end in self._intervals(pos, length):
+ self.undownloaded[filename] -= end - begin
diff --git a/BitTorrent/StorageWrapper.py b/BitTorrent/StorageWrapper.py
new file mode 100644
index 0000000..ac14fdd
--- /dev/null
+++ b/BitTorrent/StorageWrapper.py
@@ -0,0 +1,408 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from __future__ import division
+
+from sha import sha
+from array import array
+from binascii import b2a_hex
+
+from BitTorrent.bitfield import Bitfield
+from BitTorrent import BTFailure, INFO, WARNING, ERROR, CRITICAL
+
+def toint(s):
+ return int(b2a_hex(s), 16)
+
+def tobinary(i):
+ return (chr(i >> 24) + chr((i >> 16) & 0xFF) +
+ chr((i >> 8) & 0xFF) + chr(i & 0xFF))
+
+NO_PLACE = -1
+
+ALLOCATED = -1
+UNALLOCATED = -2
+FASTRESUME_PARTIAL = -3
+
+class StorageWrapper(object):
+
+ def __init__(self, storage, config, hashes, piece_size, finished,
+ statusfunc, flag, data_flunked, infohash, errorfunc, resumefile):
+ self.numpieces = len(hashes)
+ self.storage = storage
+ self.config = config
+ check_hashes = config['check_hashes']
+ self.hashes = hashes
+ self.piece_size = piece_size
+ self.data_flunked = data_flunked
+ self.errorfunc = errorfunc
+ self.total_length = storage.get_total_length()
+ self.amount_left = self.total_length
+ self.partial_mark = "BitTorrent - this part has not been "+\
+ "downloaded yet."+infohash+\
+ tobinary(config['download_slice_size'])
+ if self.total_length <= piece_size * (self.numpieces - 1):
+ raise BTFailure, _("bad data in responsefile - total too small")
+ if self.total_length > piece_size * self.numpieces:
+ raise BTFailure, _("bad data in responsefile - total too big")
+ self.finished = finished
+ self.numactive = array('H', [0] * self.numpieces)
+ self.inactive_requests = [1] * self.numpieces
+ self.amount_inactive = self.total_length
+ self.endgame = False
+ self.have = Bitfield(self.numpieces)
+ self.waschecked = Bitfield(self.numpieces)
+ if self.numpieces < 32768:
+ typecode = 'h'
+ else:
+ typecode = 'l'
+ self.places = array(typecode, [NO_PLACE] * self.numpieces)
+ if not check_hashes:
+ self.rplaces = array(typecode, range(self.numpieces))
+ fastresume = True
+ else:
+ self.rplaces = self._load_fastresume(resumefile, typecode)
+ if self.rplaces is not None:
+ fastresume = True
+ else:
+ self.rplaces = array(typecode, [UNALLOCATED] * self.numpieces)
+ fastresume = False
+ self.holepos = 0
+ self.stat_numfound = 0
+ self.stat_numflunked = 0
+ self.stat_numdownloaded = 0
+ self.stat_active = {}
+ self.stat_new = {}
+ self.stat_dirty = {}
+ self.download_history = {}
+ self.failed_pieces = {}
+
+ if self.numpieces == 0:
+ return
+ targets = {}
+ total = 0
+ if not fastresume:
+ for i in xrange(self.numpieces):
+ if self._waspre(i):
+ self.rplaces[i] = ALLOCATED
+ total += 1
+ else:
+ targets[hashes[i]] = i
+ if total and check_hashes:
+ statusfunc(_("checking existing file"), 0)
+ def markgot(piece, pos):
+ if self.have[piece]:
+ if piece != pos:
+ return
+ self.rplaces[self.places[pos]] = ALLOCATED
+ self.places[pos] = self.rplaces[pos] = pos
+ return
+ self.places[piece] = pos
+ self.rplaces[pos] = piece
+ self.have[piece] = True
+ self.amount_left -= self._piecelen(piece)
+ self.amount_inactive -= self._piecelen(piece)
+ self.inactive_requests[piece] = None
+ if not fastresume:
+ self.waschecked[piece] = True
+ self.stat_numfound += 1
+ lastlen = self._piecelen(self.numpieces - 1)
+ partials = {}
+ for i in xrange(self.numpieces):
+ if not self._waspre(i):
+ if self.rplaces[i] != UNALLOCATED:
+ raise BTFailure(_("--check_hashes 0 or fastresume info "
+ "doesn't match file state (missing data)"))
+ continue
+ elif fastresume:
+ t = self.rplaces[i]
+ if t >= 0:
+ markgot(t, i)
+ continue
+ if t == UNALLOCATED:
+ raise BTFailure(_("Bad fastresume info (files contain more "
+ "data)"))
+ if t == ALLOCATED:
+ continue
+ if t!= FASTRESUME_PARTIAL:
+ raise BTFailure(_("Bad fastresume info (illegal value)"))
+ data = self.storage.read(self.piece_size * i,
+ self._piecelen(i))
+ self._check_partial(i, partials, data)
+ self.rplaces[i] = ALLOCATED
+ else:
+ data = self.storage.read(piece_size * i, self._piecelen(i))
+ sh = sha(buffer(data, 0, lastlen))
+ sp = sh.digest()
+ sh.update(buffer(data, lastlen))
+ s = sh.digest()
+ if s == hashes[i]:
+ markgot(i, i)
+ elif s in targets and self._piecelen(i) == self._piecelen(targets[s]):
+ markgot(targets[s], i)
+ elif not self.have[self.numpieces - 1] and sp == hashes[-1] and (i == self.numpieces - 1 or not self._waspre(self.numpieces - 1)):
+ markgot(self.numpieces - 1, i)
+ else:
+ self._check_partial(i, partials, data)
+ statusfunc(fractionDone = 1 - self.amount_left /
+ self.total_length)
+ if flag.isSet():
+ return
+ self.amount_left_with_partials = self.amount_left
+ for piece in partials:
+ if self.places[piece] < 0:
+ pos = partials[piece][0]
+ self.places[piece] = pos
+ self.rplaces[pos] = piece
+ self._make_partial(piece, partials[piece][1])
+ for i in xrange(self.numpieces):
+ if self.rplaces[i] != UNALLOCATED:
+ self.storage.allocated(piece_size * i, self._piecelen(i))
+ if self.have[i]:
+ self.storage.downloaded(piece_size * i, self._piecelen(i))
+
+ def _waspre(self, piece):
+ return self.storage.was_preallocated(piece * self.piece_size, self._piecelen(piece))
+
+ def _piecelen(self, piece):
+ if piece < self.numpieces - 1:
+ return self.piece_size
+ else:
+ return self.total_length - piece * self.piece_size
+
+ def _check_partial(self, pos, partials, data):
+ index = None
+ missing = False
+ marklen = len(self.partial_mark)+4
+ for i in xrange(0, len(data) - marklen,
+ self.config['download_slice_size']):
+ if data[i:i+marklen-4] == self.partial_mark:
+ ind = toint(data[i+marklen-4:i+marklen])
+ if index is None:
+ index = ind
+ parts = []
+ if ind >= self.numpieces or ind != index:
+ return
+ parts.append(i)
+ else:
+ missing = True
+ if index is not None and missing:
+ i += self.config['download_slice_size']
+ if i < len(data):
+ parts.append(i)
+ partials[index] = (pos, parts)
+
+ def _make_partial(self, index, parts):
+ length = self._piecelen(index)
+ l = []
+ self.inactive_requests[index] = l
+ x = 0
+ self.amount_left_with_partials -= self._piecelen(index)
+ self.download_history[index] = {}
+ request_size = self.config['download_slice_size']
+ for x in xrange(0, self._piecelen(index), request_size):
+ partlen = min(request_size, length - x)
+ if x in parts:
+ l.append((x, partlen))
+ self.amount_left_with_partials += partlen
+ else:
+ self.amount_inactive -= partlen
+ self.download_history[index][x] = None
+ self.stat_dirty[index] = 1
+
+ def _initalloc(self, pos, piece):
+ assert self.rplaces[pos] < 0
+ assert self.places[piece] == NO_PLACE
+ p = self.piece_size * pos
+ length = self._piecelen(pos)
+ if self.rplaces[pos] == UNALLOCATED:
+ self.storage.allocated(p, length)
+ self.places[piece] = pos
+ self.rplaces[pos] = piece
+ # "if self.rplaces[pos] != ALLOCATED:" to skip extra mark writes
+ mark = self.partial_mark + tobinary(piece)
+ mark += chr(0xff) * (self.config['download_slice_size'] - len(mark))
+ mark *= (length - 1) // len(mark) + 1
+ self.storage.write(p, buffer(mark, 0, length))
+
+ def _move_piece(self, oldpos, newpos):
+ assert self.rplaces[newpos] < 0
+ assert self.rplaces[oldpos] >= 0
+ data = self.storage.read(self.piece_size * oldpos,
+ self._piecelen(newpos))
+ self.storage.write(self.piece_size * newpos, data)
+ if self.rplaces[newpos] == UNALLOCATED:
+ self.storage.allocated(self.piece_size * newpos, len(data))
+ piece = self.rplaces[oldpos]
+ self.places[piece] = newpos
+ self.rplaces[oldpos] = ALLOCATED
+ self.rplaces[newpos] = piece
+ if not self.have[piece]:
+ return
+ data = data[:self._piecelen(piece)]
+ if sha(data).digest() != self.hashes[piece]:
+ raise BTFailure(_("data corrupted on disk - "
+ "maybe you have two copies running?"))
+
+ def _get_free_place(self):
+ while self.rplaces[self.holepos] >= 0:
+ self.holepos += 1
+ return self.holepos
+
+ def get_amount_left(self):
+ return self.amount_left
+
+ def do_I_have_anything(self):
+ return self.amount_left < self.total_length
+
+ def _make_inactive(self, index):
+ length = self._piecelen(index)
+ l = []
+ x = 0
+ request_size = self.config['download_slice_size']
+ while x + request_size < length:
+ l.append((x, request_size))
+ x += request_size
+ l.append((x, length - x))
+ self.inactive_requests[index] = l
+
+ def _load_fastresume(self, resumefile, typecode):
+ if resumefile is not None:
+ try:
+ r = array(typecode)
+ r.fromfile(resumefile, self.numpieces)
+ return r
+ except Exception, e:
+ self.errorfunc(WARNING, _("Couldn't read fastresume data: ") +
+ str(e))
+ return None
+
+ def write_fastresume(self, resumefile):
+ for i in xrange(self.numpieces):
+ if self.rplaces[i] >= 0 and not self.have[self.rplaces[i]]:
+ self.rplaces[i] = FASTRESUME_PARTIAL
+ self.rplaces.tofile(resumefile)
+
+ def get_have_list(self):
+ return self.have.tostring()
+
+ def do_I_have(self, index):
+ return self.have[index]
+
+ def do_I_have_requests(self, index):
+ return not not self.inactive_requests[index]
+
+ def new_request(self, index):
+ # returns (begin, length)
+ if self.inactive_requests[index] == 1:
+ self._make_inactive(index)
+ self.numactive[index] += 1
+ self.stat_active[index] = 1
+ if index not in self.stat_dirty:
+ self.stat_new[index] = 1
+ rs = self.inactive_requests[index]
+ r = min(rs)
+ rs.remove(r)
+ self.amount_inactive -= r[1]
+ if self.amount_inactive == 0:
+ self.endgame = True
+ return r
+
+ def piece_came_in(self, index, begin, piece, source = None):
+ if self.places[index] < 0:
+ if self.rplaces[index] == ALLOCATED:
+ self._initalloc(index, index)
+ else:
+ n = self._get_free_place()
+ if self.places[n] >= 0:
+ oldpos = self.places[n]
+ self._move_piece(oldpos, n)
+ n = oldpos
+ if self.rplaces[index] < 0 or index == n:
+ self._initalloc(n, index)
+ else:
+ self._move_piece(index, n)
+ self._initalloc(index, index)
+
+ if index in self.failed_pieces:
+ old = self.storage.read(self.places[index] * self.piece_size +
+ begin, len(piece))
+ if old != piece:
+ self.failed_pieces[index][self.download_history[index][begin]]\
+ = None
+ self.download_history.setdefault(index, {})
+ self.download_history[index][begin] = source
+
+ self.storage.write(self.places[index] * self.piece_size + begin, piece)
+ self.stat_dirty[index] = 1
+ self.numactive[index] -= 1
+ if self.numactive[index] == 0:
+ del self.stat_active[index]
+ if index in self.stat_new:
+ del self.stat_new[index]
+ if not self.inactive_requests[index] and not self.numactive[index]:
+ del self.stat_dirty[index]
+ if sha(self.storage.read(self.piece_size * self.places[index], self._piecelen(index))).digest() == self.hashes[index]:
+ self.have[index] = True
+ self.storage.downloaded(index * self.piece_size,
+ self._piecelen(index))
+ self.inactive_requests[index] = None
+ self.waschecked[index] = True
+ self.amount_left -= self._piecelen(index)
+ self.stat_numdownloaded += 1
+ for d in self.download_history[index].itervalues():
+ if d is not None:
+ d.good(index)
+ del self.download_history[index]
+ if index in self.failed_pieces:
+ for d in self.failed_pieces[index]:
+ if d is not None:
+ d.bad(index)
+ del self.failed_pieces[index]
+ if self.amount_left == 0:
+ self.finished()
+ else:
+ self.data_flunked(self._piecelen(index), index)
+ self.inactive_requests[index] = 1
+ self.amount_inactive += self._piecelen(index)
+ self.stat_numflunked += 1
+
+ self.failed_pieces[index] = {}
+ allsenders = {}
+ for d in self.download_history[index].itervalues():
+ allsenders[d] = None
+ if len(allsenders) == 1:
+ culprit = allsenders.keys()[0]
+ if culprit is not None:
+ culprit.bad(index, bump = True)
+ del self.failed_pieces[index] # found the culprit already
+ return False
+ return True
+
+ def request_lost(self, index, begin, length):
+ self.inactive_requests[index].append((begin, length))
+ self.amount_inactive += length
+ self.numactive[index] -= 1
+ if not self.numactive[index] and index in self.stat_active:
+ del self.stat_active[index]
+ if index in self.stat_new:
+ del self.stat_new[index]
+
+ def get_piece(self, index, begin, length):
+ if not self.have[index]:
+ return None
+ if not self.waschecked[index]:
+ if sha(self.storage.read(self.piece_size * self.places[index], self._piecelen(index))).digest() != self.hashes[index]:
+ raise BTFailure, _("told file complete on start-up, but piece failed hash check")
+ self.waschecked[index] = True
+ if begin + length > self._piecelen(index):
+ return None
+ return self.storage.read(self.piece_size * self.places[index] + begin, length)
diff --git a/BitTorrent/TorrentQueue.py b/BitTorrent/TorrentQueue.py
new file mode 100644
index 0000000..4187a80
--- /dev/null
+++ b/BitTorrent/TorrentQueue.py
@@ -0,0 +1,848 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Uoti Urpala
+
+from __future__ import division
+
+import os
+import sys
+import threading
+import traceback
+
+
+from BitTorrent import GetTorrent
+from BitTorrent.platform import bttime
+from BitTorrent.download import Feedback, Multitorrent
+from BitTorrent.bencode import bdecode
+from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
+from BitTorrent.prefs import Preferences
+from BitTorrent import BTFailure, BTShutdown, INFO, WARNING, ERROR, CRITICAL
+from BitTorrent import configfile
+from BitTorrent import FAQ_URL
+import BitTorrent
+
+
+RUNNING = 0
+RUN_QUEUED = 1
+QUEUED = 2
+KNOWN = 3
+ASKING_LOCATION = 4
+
+
+class TorrentInfo(object):
+
+ def __init__(self, config):
+ self.metainfo = None
+ self.dl = None
+ self.state = None
+ self.completion = None
+ self.finishtime = None
+ self.uptotal = 0
+ self.uptotal_old = 0
+ self.downtotal = 0
+ self.downtotal_old = 0
+ self.config = config
+
+ def _set_dlpath(self, value):
+ self.config['save_as'] = value
+
+ def _get_dlpath(self):
+ return self.config['save_as']
+
+ dlpath = property(_get_dlpath, _set_dlpath)
+
+
+def decode_position(l, pred, succ, default=None):
+ if default is None:
+ default = len(l)
+ if pred is None and succ is None:
+ return default
+ if pred is None:
+ return 0
+ if succ is None:
+ return len(l)
+ try:
+ if l[0] == succ and pred not in l:
+ return 0
+ if l[-1] == pred and succ not in l:
+ return len(l)
+ i = l.index(pred)
+ if l[i+1] == succ:
+ return i+1
+ except (ValueError, IndexError):
+ pass
+ return default
+
+
+class TorrentQueue(Feedback):
+
+ def __init__(self, config, ui_options, ipc):
+ self.ui_options = ui_options
+ self.ipc = ipc
+ self.config = config
+ self.config['def_running_torrents'] = 1 # !@# XXX
+ self.config['max_running_torrents'] = 100 # !@# XXX
+ self.doneflag = threading.Event()
+ self.torrents = {}
+ self.starting_torrent = None
+ self.running_torrents = []
+ self.queue = []
+ self.other_torrents = []
+ self.last_save_time = 0
+ self.last_version_check = 0
+ self.initialized = 0
+
+ def run(self, ui, ui_wrap, startflag):
+ try:
+ self.ui = ui
+ self.run_ui_task = ui_wrap
+ self.multitorrent = Multitorrent(self.config, self.doneflag,
+ self.global_error, listen_fail_ok=True)
+ self.rawserver = self.multitorrent.rawserver
+ self.ipc.set_rawserver(self.rawserver)
+ self.ipc.start(self.external_command)
+ try:
+ self._restore_state()
+ except BTFailure, e:
+ self.torrents = {}
+ self.running_torrents = []
+ self.queue = []
+ self.other_torrents = []
+ self.global_error(ERROR, _("Could not load saved state: ")+str(e))
+ else:
+ for infohash in self.running_torrents + self.queue + \
+ self.other_torrents:
+ t = self.torrents[infohash]
+ if t.dlpath is not None:
+ t.completion = self.multitorrent.get_completion(
+ self.config, t.metainfo, t.dlpath)
+ state = t.state
+ if state == RUN_QUEUED:
+ state = RUNNING
+ self.run_ui_task(self.ui.new_displayed_torrent, infohash,
+ t.metainfo, t.dlpath, state, t.config,
+ t.completion, t.uptotal, t.downtotal, )
+ self._check_queue()
+ self.initialized = 1
+ startflag.set()
+ except Exception, e:
+ # dump a normal exception traceback
+ traceback.print_exc()
+ # set the error flag
+ self.initialized = -1
+ # signal the gui thread to stop waiting
+ startflag.set()
+ return
+
+ self._queue_loop()
+ self.multitorrent.rawserver.listen_forever()
+ if self.doneflag.isSet():
+ self.run_ui_task(self.ui.quit)
+ self.multitorrent.close_listening_socket()
+ self.ipc.stop()
+ for infohash in list(self.running_torrents):
+ t = self.torrents[infohash]
+ if t.state == RUN_QUEUED:
+ continue
+ t.dl.shutdown()
+ if t.dl is not None: # possibly set to none by failed()
+ totals = t.dl.get_total_transfer()
+ t.uptotal = t.uptotal_old + totals[0]
+ t.downtotal = t.downtotal_old + totals[1]
+ self._dump_state()
+
+ def _check_version(self):
+ now = bttime()
+ if self.last_version_check > 0 and \
+ self.last_version_check > now - 24*60*60:
+ return
+ self.last_version_check = now
+ self.run_ui_task(self.ui.check_version)
+
+ def _dump_config(self):
+ configfile.save_ui_config(self.config, 'bittorrent',
+ self.ui_options, self.global_error)
+ for infohash,t in self.torrents.items():
+ ec = lambda level, message: self.error(t.metainfo, level, message)
+ config = t.config.getDict()
+ if config:
+ configfile.save_torrent_config(self.config['data_dir'],
+ infohash, config, ec)
+
+ def _dump_state(self):
+ self.last_save_time = bttime()
+ r = []
+ def write_entry(infohash, t):
+ if t.dlpath is None:
+ assert t.state == ASKING_LOCATION
+ r.append(infohash.encode('hex') + '\n')
+ else:
+ r.append(infohash.encode('hex') + ' ' + str(t.uptotal) + ' ' +
+ str(t.downtotal)+' '+t.dlpath.encode('string_escape')+'\n')
+ r.append('BitTorrent UI state file, version 3\n')
+ r.append('Running torrents\n')
+ for infohash in self.running_torrents:
+ write_entry(infohash, self.torrents[infohash])
+ r.append('Queued torrents\n')
+ for infohash in self.queue:
+ write_entry(infohash, self.torrents[infohash])
+ r.append('Known torrents\n')
+ for infohash in self.other_torrents:
+ write_entry(infohash, self.torrents[infohash])
+ r.append('End\n')
+ f = None
+ try:
+ filename = os.path.join(self.config['data_dir'], 'ui_state')
+ f = file(filename + '.new', 'wb')
+ f.write(''.join(r))
+ f.close()
+ if os.access(filename, os.F_OK):
+ os.remove(filename) # no atomic rename on win32
+ os.rename(filename + '.new', filename)
+ except Exception, e:
+ self.global_error(ERROR, _("Could not save UI state: ") + str(e))
+ if f is not None:
+ f.close()
+
+ def _restore_state(self):
+ def decode_line(line):
+ hashtext = line[:40]
+ try:
+ infohash = hashtext.decode('hex')
+ except:
+ raise BTFailure(_("Invalid state file contents"))
+ if len(infohash) != 20:
+ raise BTFailure(_("Invalid state file contents"))
+ try:
+ path = os.path.join(self.config['data_dir'], 'metainfo',
+ hashtext)
+ f = file(path, 'rb')
+ data = f.read()
+ f.close()
+ except Exception, e:
+ try:
+ f.close()
+ except:
+ pass
+ self.global_error(ERROR,
+ (_("Error reading file \"%s\".") % path) +
+ " (" + str(e)+ "), " +
+ _("cannot restore state completely"))
+ return None
+ if infohash in self.torrents:
+ raise BTFailure(_("Invalid state file (duplicate entry)"))
+ t = TorrentInfo(Preferences(self.config))
+ self.torrents[infohash] = t
+ try:
+ t.metainfo = ConvertedMetainfo(bdecode(data))
+ except Exception, e:
+ self.global_error(ERROR,
+ (_("Corrupt data in \"%s\", cannot restore torrent.") % path) +
+ '('+str(e)+')')
+ return None
+ t.metainfo.reported_errors = True # suppress redisplay on restart
+ if infohash != t.metainfo.infohash:
+ self.global_error(ERROR,
+ (_("Corrupt data in \"%s\", cannot restore torrent.") % path) +
+ _("(infohash mismatch)"))
+ return None
+ if len(line) == 41:
+ t.dlpath = None
+ return infohash, t
+ try:
+ if version < 2:
+ t.dlpath = line[41:-1].decode('string_escape')
+ elif version == 3:
+ up, down, dlpath = line[41:-1].split(' ', 2)
+ t.uptotal = t.uptotal_old = int(up)
+ t.downtotal = t.downtotal_old = int(down)
+ t.dlpath = dlpath.decode('string_escape')
+ elif version >= 4:
+ up, down = line[41:-1].split(' ', 1)
+ t.uptotal = t.uptotal_old = int(up)
+ t.downtotal = t.downtotal_old = int(down)
+ except ValueError: # unpack, int(), decode()
+ raise BTFailure(_("Invalid state file (bad entry)"))
+ config = configfile.read_torrent_config(self.config,
+ self.config['data_dir'],
+ infohash, self.global_error)
+ t.config.update(config)
+ return infohash, t
+ filename = os.path.join(self.config['data_dir'], 'ui_state')
+ if not os.path.exists(filename):
+ return
+ f = None
+ try:
+ f = file(filename, 'rb')
+ lines = f.readlines()
+ f.close()
+ except Exception, e:
+ if f is not None:
+ f.close()
+ raise BTFailure(str(e))
+ i = iter(lines)
+ try:
+ txt = 'BitTorrent UI state file, version '
+ version = i.next()
+ if not version.startswith(txt):
+ raise BTFailure(_("Bad UI state file"))
+ try:
+ version = int(version[len(txt):-1])
+ except:
+ raise BTFailure(_("Bad UI state file version"))
+ if version > 4:
+ raise BTFailure(_("Unsupported UI state file version (from "
+ "newer client version?)"))
+ if version < 3:
+ if i.next() != 'Running/queued torrents\n':
+ raise BTFailure(_("Invalid state file contents"))
+ else:
+ if i.next() != 'Running torrents\n':
+ raise BTFailure(_("Invalid state file contents"))
+ while True:
+ line = i.next()
+ if line == 'Queued torrents\n':
+ break
+ t = decode_line(line)
+ if t is None:
+ continue
+ infohash, t = t
+ if t.dlpath is None:
+ raise BTFailure(_("Invalid state file contents"))
+ t.state = RUN_QUEUED
+ self.running_torrents.append(infohash)
+ while True:
+ line = i.next()
+ if line == 'Known torrents\n':
+ break
+ t = decode_line(line)
+ if t is None:
+ continue
+ infohash, t = t
+ if t.dlpath is None:
+ raise BTFailure(_("Invalid state file contents"))
+ t.state = QUEUED
+ self.queue.append(infohash)
+ while True:
+ line = i.next()
+ if line == 'End\n':
+ break
+ t = decode_line(line)
+ if t is None:
+ continue
+ infohash, t = t
+ if t.dlpath is None:
+ t.state = ASKING_LOCATION
+ else:
+ t.state = KNOWN
+ self.other_torrents.append(infohash)
+ except StopIteration:
+ raise BTFailure(_("Invalid state file contents"))
+
+ def _queue_loop(self):
+ if self.doneflag.isSet():
+ return
+ self.rawserver.add_task(self._queue_loop, 20)
+ now = bttime()
+ self._check_version()
+ if self.queue and self.starting_torrent is None:
+ mintime = now - self.config['next_torrent_time'] * 60
+ minratio = self.config['next_torrent_ratio'] / 100
+ if self.config['seed_forever']:
+ minratio = 1e99
+ else:
+ mintime = 0
+ minratio = self.config['last_torrent_ratio'] / 100
+ if self.config['seed_last_forever']:
+ minratio = 1e99
+ if minratio >= 1e99:
+ return
+ for infohash in self.running_torrents:
+ t = self.torrents[infohash]
+ myminratio = minratio
+ if t.dl:
+ if self.queue and t.dl.config['seed_last_forever']:
+ myminratio = 1e99
+ elif t.dl.config['seed_forever']:
+ myminratio = 1e99
+ if t.state == RUN_QUEUED:
+ continue
+ totals = t.dl.get_total_transfer()
+ # not updated for remaining torrents if one is stopped, who cares
+ t.uptotal = t.uptotal_old + totals[0]
+ t.downtotal = t.downtotal_old + totals[1]
+ if t.finishtime is None or t.finishtime > now - 120:
+ continue
+ if t.finishtime > mintime:
+ if t.uptotal < t.metainfo.total_bytes * myminratio:
+ continue
+ self.change_torrent_state(infohash, RUNNING, KNOWN)
+ break
+ if self.running_torrents and self.last_save_time < now - 300:
+ self._dump_state()
+
+ def _check_queue(self):
+ if self.starting_torrent is not None or self.config['pause']:
+ return
+ for infohash in self.running_torrents:
+ if self.torrents[infohash].state == RUN_QUEUED:
+ self.starting_torrent = infohash
+ t = self.torrents[infohash]
+ t.state = RUNNING
+ t.finishtime = None
+ t.dl = self.multitorrent.start_torrent(t.metainfo, t.config,
+ self, t.dlpath)
+ return
+ if not self.queue or len(self.running_torrents) >= \
+ self.config['def_running_torrents']:
+ return
+ infohash = self.queue.pop(0)
+ self.starting_torrent = infohash
+ t = self.torrents[infohash]
+ assert t.state == QUEUED
+ t.state = RUNNING
+ t.finishtime = None
+ self.running_torrents.append(infohash)
+ t.dl = self.multitorrent.start_torrent(t.metainfo, t.config, self,
+ t.dlpath)
+ self._send_state(infohash)
+
+ def _send_state(self, infohash):
+ t = self.torrents[infohash]
+ state = t.state
+ if state == RUN_QUEUED:
+ state = RUNNING
+ pos = None
+ if state in (KNOWN, RUNNING, QUEUED):
+ l = self._get_list(state)
+ if l[-1] != infohash:
+ pos = l.index(infohash)
+ self.run_ui_task(self.ui.torrent_state_changed, infohash, t.dlpath,
+ state, t.completion, t.uptotal_old, t.downtotal_old, pos)
+
+ def _stop_running(self, infohash):
+ t = self.torrents[infohash]
+ if t.state == RUN_QUEUED:
+ self.running_torrents.remove(infohash)
+ t.state = KNOWN
+ return True
+ assert t.state == RUNNING
+ shutdown_succeded = t.dl.shutdown()
+ if not shutdown_succeded:
+ self.run_ui_task(self.ui.open_log)
+ self.error(t.metainfo, ERROR, "Unable to stop torrent. Please send this application log to bugs@bittorrent.com .")
+ return False
+ if infohash == self.starting_torrent:
+ self.starting_torrent = None
+ try:
+ self.running_torrents.remove(infohash)
+ except ValueError:
+ self.other_torrents.remove(infohash)
+ return False
+ else:
+ t.state = KNOWN
+ totals = t.dl.get_total_transfer()
+ t.uptotal_old += totals[0]
+ t.uptotal = t.uptotal_old
+ t.downtotal_old += totals[1]
+ t.downtotal = t.downtotal_old
+ t.dl = None
+ t.completion = self.multitorrent.get_completion(self.config,
+ t.metainfo, t.dlpath)
+ return True
+
+ def external_command(self, action, *datas):
+ if action == 'start_torrent':
+ assert len(datas) == 2
+ self.start_new_torrent_by_name(datas[0], save_as=datas[1])
+ elif action == 'show_error':
+ assert len(datas) == 1
+ self.global_error(ERROR, datas[0])
+ elif action == 'no-op':
+ pass
+
+ def remove_torrent(self, infohash):
+ if infohash not in self.torrents:
+ return
+ state = self.torrents[infohash].state
+ if state == QUEUED:
+ self.queue.remove(infohash)
+ elif state in (RUNNING, RUN_QUEUED):
+ self._stop_running(infohash)
+ self._check_queue()
+ else:
+ self.other_torrents.remove(infohash)
+ self.run_ui_task(self.ui.removed_torrent, infohash)
+ del self.torrents[infohash]
+
+ for d in ['metainfo', 'resume']:
+ filename = os.path.join(self.config['data_dir'], d,
+ infohash.encode('hex'))
+ try:
+ os.remove(filename)
+ except Exception, e:
+ self.global_error(WARNING,
+ (_("Could not delete cached %s file:")%d) +
+ str(e))
+ ec = lambda level, message: self.global_error(level, message)
+ configfile.remove_torrent_config(self.config['data_dir'],
+ infohash, ec)
+ self._dump_state()
+
+ def set_save_location(self, infohash, dlpath):
+ torrent = self.torrents.get(infohash)
+ if torrent is None or torrent.state == RUNNING:
+ return
+ torrent.dlpath = dlpath
+ self._dump_config()
+ torrent.completion = self.multitorrent.get_completion(self.config,
+ torrent.metainfo, dlpath)
+ if torrent.state == ASKING_LOCATION:
+ torrent.state = KNOWN
+ self.change_torrent_state(infohash, KNOWN, QUEUED)
+ else:
+ self._send_state(infohash)
+ self._dump_state()
+
+ def _get_torrent_then_callback(self, name, save_as=None):
+ data, errors = GetTorrent.get_quietly(name)
+
+ if data:
+ self.start_new_torrent(data, save_as)
+ for error in errors:
+ self.run_ui_task(self.ui.global_error, ERROR, error)
+
+ def start_new_torrent_by_name(self, name, save_as=None):
+ t = threading.Thread(target=self._get_torrent_then_callback,
+ args=(name, save_as,))
+ t.setDaemon(True)
+ t.start()
+
+ def start_new_torrent(self, data, save_as=None):
+ t = TorrentInfo(Preferences(self.config))
+ try:
+ t.metainfo = ConvertedMetainfo(bdecode(data))
+ except Exception, e:
+ self.global_error(ERROR, _("This is not a valid torrent file. (%s)")
+ % str(e))
+ return
+ infohash = t.metainfo.infohash
+ if infohash in self.torrents:
+ real_state = self.torrents[infohash].state
+ if real_state in (RUNNING, RUN_QUEUED):
+ self.error(t.metainfo, ERROR,
+ _("This torrent (or one with the same contents) is "
+ "already running."))
+ elif real_state == QUEUED:
+ self.error(t.metainfo, ERROR,
+ _("This torrent (or one with the same contents) is "
+ "already waiting to run."))
+ elif real_state == ASKING_LOCATION:
+ pass
+ elif real_state == KNOWN:
+ self.change_torrent_state(infohash, KNOWN, newstate=QUEUED)
+ else:
+ raise BTFailure(_("Torrent in unknown state %d") % real_state)
+ return
+
+ path = os.path.join(self.config['data_dir'], 'metainfo',
+ infohash.encode('hex'))
+ try:
+ f = file(path+'.new', 'wb')
+ f.write(data)
+ f.close()
+ if os.access(path, os.F_OK):
+ os.remove(path) # no atomic rename on win32
+ os.rename(path+'.new', path)
+ except Exception, e:
+ try:
+ f.close()
+ except:
+ pass
+ self.global_error(ERROR, _("Could not write file ") + path +
+ ' (' + str(e) + '), ' +
+ _("torrent will not be restarted "
+ "correctly on client restart"))
+
+ config = configfile.read_torrent_config(self.config,
+ self.config['data_dir'],
+ infohash, self.global_error)
+ if config:
+ t.config.update(config)
+ if save_as:
+ self.run_ui_task(self.ui.set_config, 'save_as', save_as)
+ else:
+ save_as = None
+
+ self.torrents[infohash] = t
+ t.state = ASKING_LOCATION
+ self.other_torrents.append(infohash)
+ self._dump_state()
+ self.run_ui_task(self.ui.new_displayed_torrent, infohash,
+ t.metainfo, save_as, t.state, t.config)
+
+ def show_error(level, text):
+ self.run_ui_task(self.ui.error, infohash, level, text)
+ t.metainfo.show_encoding_errors(show_error)
+
+ def set_config(self, option, value, ihash=None):
+ if not ihash:
+ oldvalue = self.config[option]
+ self.config[option] = value
+ self.multitorrent.set_option(option, value)
+ if option == 'pause':
+ if value:# and not oldvalue:
+ self.set_zero_running_torrents()
+ elif not value:# and oldvalue:
+ self._check_queue()
+ else:
+ torrent = self.torrents[ihash]
+ if torrent.state == RUNNING:
+ torrent.dl.set_option(option, value)
+ if option in ('forwarded_port', 'maxport'):
+ torrent.dl.change_port()
+ torrent.config[option] = value
+ self._dump_config()
+
+ def request_status(self, infohash, want_spew, want_fileinfo):
+ torrent = self.torrents.get(infohash)
+ if torrent is None or torrent.state != RUNNING:
+ return
+ status = torrent.dl.get_status(want_spew, want_fileinfo)
+ if torrent.finishtime is not None:
+ now = bttime()
+ uptotal = status['upTotal'] + torrent.uptotal_old
+ downtotal = status['downTotal'] + torrent.downtotal_old
+ ulspeed = status['upRate2']
+ if self.queue:
+ ratio = torrent.dl.config['next_torrent_ratio'] / 100
+ if torrent.dl.config['seed_forever']:
+ ratio = 1e99
+ else:
+ ratio = torrent.dl.config['last_torrent_ratio'] / 100
+ if torrent.dl.config['seed_last_forever']:
+ ratio = 1e99
+ if ulspeed <= 0 or ratio >= 1e99:
+ rem = 1e99
+ elif downtotal == 0:
+ rem = (torrent.metainfo.total_bytes * ratio - uptotal) / ulspeed
+ else:
+ rem = (downtotal * ratio - uptotal) / ulspeed
+ if self.queue and not torrent.dl.config['seed_forever']:
+ rem = min(rem, torrent.finishtime +
+ torrent.dl.config['next_torrent_time'] * 60 - now)
+ rem = max(rem, torrent.finishtime + 120 - now)
+ if rem <= 0:
+ rem = 1
+ if rem >= 1e99:
+ rem = None
+ status['timeEst'] = rem
+ self.run_ui_task(self.ui.update_status, infohash, status)
+
+ def _get_list(self, state):
+ if state == KNOWN:
+ return self.other_torrents
+ elif state == QUEUED:
+ return self.queue
+ elif state in (RUNNING, RUN_QUEUED):
+ return self.running_torrents
+ assert False
+
+ def change_torrent_state(self, infohash, oldstate, newstate=None,
+ pred=None, succ=None, replaced=None, force_running=False):
+ t = self.torrents.get(infohash)
+ if t is None or (t.state != oldstate and not (t.state == RUN_QUEUED and
+ oldstate == RUNNING)):
+ return
+ if newstate is None:
+ newstate = oldstate
+ assert oldstate in (KNOWN, QUEUED, RUNNING)
+ assert newstate in (KNOWN, QUEUED, RUNNING)
+ pos = None
+ if oldstate != RUNNING and newstate == RUNNING and replaced is None:
+ if len(self.running_torrents) >= (force_running and self.config[
+ 'max_running_torrents'] or self.config['def_running_torrents']):
+ if force_running:
+ self.global_error(ERROR,
+ _("Can't run more than %d torrents "
+ "simultaneously. For more info see the"
+ " FAQ at %s.")%
+ (self.config['max_running_torrents'],
+ FAQ_URL))
+ newstate = QUEUED
+ pos = 0
+ l = self._get_list(newstate)
+ if newstate == oldstate:
+ origpos = l.index(infohash)
+ del l[origpos]
+ if pos is None:
+ pos = decode_position(l, pred, succ, -1)
+ if pos == -1 or l == origpos:
+ l.insert(origpos, infohash)
+ return
+ l.insert(pos, infohash)
+ self._dump_state()
+ self.run_ui_task(self.ui.reorder_torrent, infohash, pos)
+ return
+ if pos is None:
+ pos = decode_position(l, pred, succ)
+ if newstate == RUNNING:
+ newstate = RUN_QUEUED
+ if replaced and len(self.running_torrents) >= \
+ self.config['def_running_torrents']:
+ t2 = self.torrents.get(replaced)
+ if t2 is None or t2.state not in (RUNNING, RUN_QUEUED):
+ return
+ if self.running_torrents.index(replaced) < pos:
+ pos -= 1
+ if self._stop_running(replaced):
+ t2.state = QUEUED
+ self.queue.insert(0, replaced)
+ self._send_state(replaced)
+ else:
+ self.other_torrents.append(replaced)
+ if oldstate == RUNNING:
+ if newstate == QUEUED and len(self.running_torrents) <= \
+ self.config['def_running_torrents'] and pos == 0:
+ return
+ if not self._stop_running(infohash):
+ if newstate == KNOWN:
+ self.other_torrents.insert(pos, infohash)
+ self.run_ui_task(self.ui.reorder_torrent, infohash, pos)
+ else:
+ self.other_torrents.append(infohash)
+ return
+ else:
+ self._get_list(oldstate).remove(infohash)
+ t.state = newstate
+ l.insert(pos, infohash)
+ self._check_queue() # sends state if it starts the torrent from queue
+ if t.state != RUNNING or newstate == RUN_QUEUED:
+ self._send_state(infohash)
+ self._dump_state()
+
+ def set_zero_running_torrents(self):
+ newrun = []
+ for infohash in list(self.running_torrents):
+ t = self.torrents[infohash]
+ if self._stop_running(infohash):
+ newrun.append(infohash)
+ t.state = RUN_QUEUED
+ else:
+ self.other_torrents.append(infohash)
+ self.running_torrents = newrun
+
+ def check_completion(self, infohash, filelist=False):
+ t = self.torrents.get(infohash)
+ if t is None:
+ return
+ r = self.multitorrent.get_completion(self.config, t.metainfo,
+ t.dlpath, filelist)
+ if r is None or not filelist:
+ self.run_ui_task(self.ui.update_completion, infohash, r)
+ else:
+ self.run_ui_task(self.ui.update_completion, infohash, *r)
+
+ def global_error(self, level, text):
+ self.run_ui_task(self.ui.global_error, level, text)
+
+ # callbacks from torrent instances
+
+ def failed(self, torrent, is_external):
+ infohash = torrent.infohash
+ if infohash == self.starting_torrent:
+ self.starting_torrent = None
+ self.running_torrents.remove(infohash)
+ t = self.torrents[infohash]
+ t.state = KNOWN
+ if is_external:
+ t.completion = self.multitorrent.get_completion(
+ self.config, t.metainfo, t.dlpath)
+ else:
+ t.completion = None
+ totals = t.dl.get_total_transfer()
+ t.uptotal_old += totals[0]
+ t.uptotal = t.uptotal_old
+ t.downtotal_old += totals[1]
+ t.downtotal = t.downtotal_old
+ t.dl = None
+ self.other_torrents.append(infohash)
+ self._send_state(infohash)
+ if not self.doneflag.isSet():
+ self._check_queue()
+ self._dump_state()
+
+ def finished(self, torrent):
+ """called when a download reaches 100%"""
+ infohash = torrent.infohash
+ t = self.torrents[infohash]
+ totals = t.dl.get_total_transfer()
+ if t.downtotal == 0 and t.downtotal_old == 0 and totals[1] == 0:
+ self.set_config('seed_forever', True, infohash)
+ self.set_config('seed_last_forever', True, infohash)
+ self.request_status(infohash, False, False)
+
+ if infohash == self.starting_torrent:
+ t = self.torrents[infohash]
+ if self.queue:
+ ratio = t.config['next_torrent_ratio'] / 100
+ if t.config['seed_forever']:
+ ratio = 1e99
+ msg = _("Not starting torrent as there are other torrents "
+ "waiting to run, and this one already meets the "
+ "settings for when to stop seeding.")
+ else:
+ ratio = t.config['last_torrent_ratio'] / 100
+ if t.config['seed_last_forever']:
+ ratio = 1e99
+ msg = _("Not starting torrent as it already meets the "
+ "settings for when to stop seeding the last "
+ "completed torrent.")
+ if ratio < 1e99 and t.uptotal >= t.metainfo.total_bytes * ratio:
+ raise BTShutdown(msg)
+ self.torrents[torrent.infohash].finishtime = bttime()
+
+ def started(self, torrent):
+ infohash = torrent.infohash
+ assert infohash == self.starting_torrent
+ self.starting_torrent = None
+ self._check_queue()
+
+ def error(self, torrent, level, text):
+ self.run_ui_task(self.ui.error, torrent.infohash, level, text)
+
+
+class ThreadWrappedQueue(object):
+
+ def __init__(self, wrapped):
+ self.wrapped = wrapped
+
+ def set_done(self):
+ self.wrapped.doneflag.set()
+ # add a dummy task to make sure the thread wakes up and notices flag
+ def dummy():
+ pass
+ self.wrapped.rawserver.external_add_task(dummy, 0)
+
+# OW
+def _makemethod(methodname):
+ def wrapper(self, *args, **kws):
+ def f():
+ getattr(self.wrapped, methodname)(*args, **kws)
+ self.wrapped.rawserver.external_add_task(f, 0)
+ return wrapper
+
+# also OW
+for methodname in ("request_status set_config start_new_torrent "
+ "start_new_torrent_by_name remove_torrent set_save_location "
+ "change_torrent_state check_completion").split():
+ setattr(ThreadWrappedQueue, methodname, _makemethod(methodname))
+del _makemethod, methodname
diff --git a/BitTorrent/TrayIcon.py b/BitTorrent/TrayIcon.py
new file mode 100644
index 0000000..ac7620d
--- /dev/null
+++ b/BitTorrent/TrayIcon.py
@@ -0,0 +1,95 @@
+import os
+
+from BitTorrent import app_name
+from BitTorrent.GUI import gtk_wrap
+from BitTorrent.platform import image_root
+
+if os.name == 'nt':
+ from systray import systray
+
+ class TrayIcon(systray.Control):
+ def __init__(self, initial_state, toggle_func=None, quit_func=None):
+ iconpath = os.path.join(image_root, 'bittorrent.ico')
+
+ systray.Control.__init__(self, app_name, iconpath)
+
+ self.toggle_func = toggle_func
+ self.quit_func = quit_func
+ self.tooltip_text = None
+
+ self.toggle_state = initial_state
+ menu_text = self._get_text_for_state(self.toggle_state)
+
+ self.toggle_item = systray.MenuItem(name='toggle',
+ title=menu_text)
+
+ self.toggle_item.onclick = self.toggle
+ self.on_double_click = self.toggle
+
+ self.add_menuitem(self.toggle_item)
+ self.default_menu_index = 1
+
+ def get_tooltip(self):
+ return self.tooltip_text
+
+ def set_tooltip(self, tooltip_text):
+ # ow.
+ if not hasattr(self, 'systray'):
+ return
+
+ # FIXME: pysystray bug means this might fail
+ try:
+ if self.tooltip_text != tooltip_text:
+ self.systray.text = tooltip_text
+ # we set our own cache after sending the value to pysystray,
+ # since it could fail
+ self.tooltip_text = tooltip_text
+ except:
+ pass
+
+ def on_quit(self, *args):
+ if self.quit_func is not None:
+ self._callout(self.quit_func)
+
+ def set_toggle_state(self, b):
+ # ow.
+ if not hasattr(self, "systray"):
+ return
+
+ s = self.systray
+ self.toggle_state = b
+ s.menu.items['toggle'].title = self._get_text_for_state(self.toggle_state)
+
+ def _get_text_for_state(self, state):
+ if state:
+ text = _("Hide %s") % app_name
+ else:
+ text = _("Show %s") % app_name
+ return text
+
+ def toggle(self, s):
+ if self.toggle_func is not None:
+ self._callout(self.toggle_func)
+ self.set_toggle_state(not self.toggle_state)
+
+ def _callout(self, func):
+ if callable(func):
+ gtk_wrap(func)
+
+else:
+ # No tray icon for *your* OS !
+ class TrayIcon:
+ def func(*a, **kw):
+ pass
+ __init__ = enable = disable = get_tooltip = set_tooltip = set_toggle_state = func
+
+
+if __name__ == '__main__':
+ import threading
+ from BitTorrent.platform import install_translation
+ install_translation()
+ ti = TrayIcon(True)
+ th = threading.Thread(target=ti.enable, args=())
+ th.start()
+ from time import sleep
+ sleep(10)
diff --git a/BitTorrent/Uploader.py b/BitTorrent/Uploader.py
new file mode 100644
index 0000000..d02bfa8
--- /dev/null
+++ b/BitTorrent/Uploader.py
@@ -0,0 +1,97 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from BitTorrent.CurrentRateMeasure import Measure
+
+
+class Upload(object):
+
+ def __init__(self, connection, ratelimiter, totalup, totalup2, choker,
+ storage, max_slice_length, max_rate_period):
+ self.connection = connection
+ self.ratelimiter = ratelimiter
+ self.totalup = totalup
+ self.totalup2 = totalup2
+ self.choker = choker
+ self.storage = storage
+ self.max_slice_length = max_slice_length
+ self.max_rate_period = max_rate_period
+ self.choked = True
+ self.unchoke_time = None
+ self.interested = False
+ self.buffer = []
+ self.measure = Measure(max_rate_period)
+ if storage.do_I_have_anything():
+ connection.send_bitfield(storage.get_have_list())
+
+ def got_not_interested(self):
+ if self.interested:
+ self.interested = False
+ del self.buffer[:]
+ self.choker.not_interested(self.connection)
+
+ def got_interested(self):
+ if not self.interested:
+ self.interested = True
+ self.choker.interested(self.connection)
+
+ def get_upload_chunk(self):
+ if not self.buffer:
+ return None
+ index, begin, length = self.buffer.pop(0)
+ piece = self.storage.get_piece(index, begin, length)
+ if piece is None:
+ self.connection.close()
+ return None
+ return (index, begin, piece)
+
+ def update_rate(self, bytes):
+ self.measure.update_rate(bytes)
+ self.totalup.update_rate(bytes)
+ self.totalup2.update_rate(bytes)
+
+ def got_request(self, index, begin, length):
+ if not self.interested or length > self.max_slice_length:
+ self.connection.close()
+ return
+ if not self.connection.choke_sent:
+ self.buffer.append((index, begin, length))
+ if self.connection.next_upload is None and \
+ self.connection.connection.is_flushed():
+ self.ratelimiter.queue(self.connection, self.connection.encoder.context.rlgroup)
+
+ def got_cancel(self, index, begin, length):
+ try:
+ self.buffer.remove((index, begin, length))
+ except ValueError:
+ pass
+
+ def choke(self):
+ if not self.choked:
+ self.choked = True
+ self.connection.send_choke()
+
+ def sent_choke(self):
+ assert self.choked
+ del self.buffer[:]
+
+ def unchoke(self, time):
+ if self.choked:
+ self.choked = False
+ self.unchoke_time = time
+ self.connection.send_unchoke()
+
+ def has_queries(self):
+ return len(self.buffer) > 0
+
+ def get_rate(self):
+ return self.measure.get_rate()
diff --git a/BitTorrent/__init__.py b/BitTorrent/__init__.py
new file mode 100644
index 0000000..877e27f
--- /dev/null
+++ b/BitTorrent/__init__.py
@@ -0,0 +1,88 @@
+# -*- coding: UTF-8 -*-
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+app_name = 'BitTorrent'
+version = '4.4.0'
+
+URL = 'http://www.bittorrent.com/'
+DONATE_URL = URL + 'donate.html'
+FAQ_URL = URL + 'FAQ.html'
+HELP_URL = URL + 'documentation.html'
+SEARCH_URL = 'http://search.bittorrent.com/search.jsp?client=%(client)s&query=%(query)s'
+
+import sys
+assert sys.version_info >= (2, 2, 1), _("Python %s or newer required") % '2.2.1'
+import os
+import time
+
+branch = None
+if os.access('.cdv', os.F_OK):
+ branch = os.path.split(os.path.realpath(os.path.split(sys.argv[0])[0]))[1]
+
+from BitTorrent.language import languages, language_names
+from BitTorrent.platform import get_home_dir, is_frozen_exe
+
+if os.name == 'posix':
+ if os.uname()[0] == "Darwin":
+ from BitTorrent.platform import install_translation
+ install_translation()
+
+# hackery to get around bug in py2exe that tries to write log files to
+# application directories, which may not be writable by non-admin users
+if is_frozen_exe:
+ baseclass = sys.stderr.__class__
+ class Stderr(baseclass):
+ logroot = get_home_dir()
+
+ if logroot is None:
+ logroot = os.path.splitdrive(sys.executable)[0]
+ if logroot[-1] != os.sep:
+ logroot += os.sep
+ logname = os.path.splitext(os.path.split(sys.executable)[1])[0] + '_errors.log'
+ logpath = os.path.join(logroot, logname)
+
+ def __init__(self):
+ self.just_wrote_newline = True
+
+ def write(self, text, alert=None, fname=logpath):
+ output = text
+
+ if self.just_wrote_newline and not text.startswith('[%s ' % version):
+ output = '[%s %s] %s' % (version, time.strftime('%Y-%m-%d %H:%M:%S'), text)
+
+ if 'GtkWarning' not in text:
+ baseclass.write(self, output, fname=fname)
+
+ if output[-1] == '\n':
+ self.just_wrote_newline = True
+ else:
+ self.just_wrote_newline = False
+
+ sys.stderr = Stderr()
+
+del sys, get_home_dir, is_frozen_exe
+
+INFO = 0
+WARNING = 1
+ERROR = 2
+CRITICAL = 3
+
+status_dict = {INFO: 'info',
+ WARNING: 'warning',
+ ERROR: 'error',
+ CRITICAL: 'critical'}
+
+class BTFailure(Exception):
+ pass
+
+class BTShutdown(BTFailure):
+ pass
+
diff --git a/BitTorrent/bencode.py b/BitTorrent/bencode.py
new file mode 100644
index 0000000..1ee1d66
--- /dev/null
+++ b/BitTorrent/bencode.py
@@ -0,0 +1,136 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Petru Paler
+
+from BitTorrent.obsoletepythonsupport import *
+
+from BitTorrent import BTFailure
+
+def decode_int(x, f):
+ f += 1
+ newf = x.index('e', f)
+ n = int(x[f:newf])
+ if x[f] == '-':
+ if x[f + 1] == '0':
+ raise ValueError
+ elif x[f] == '0' and newf != f+1:
+ raise ValueError
+ return (n, newf+1)
+
+def decode_string(x, f):
+ colon = x.index(':', f)
+ n = int(x[f:colon])
+ if x[f] == '0' and colon != f+1:
+ raise ValueError
+ colon += 1
+ return (x[colon:colon+n], colon+n)
+
+def decode_list(x, f):
+ r, f = [], f+1
+ while x[f] != 'e':
+ v, f = decode_func[x[f]](x, f)
+ r.append(v)
+ return (r, f + 1)
+
+def decode_dict(x, f):
+ r, f = {}, f+1
+ lastkey = None
+ while x[f] != 'e':
+ k, f = decode_string(x, f)
+ if lastkey >= k:
+ raise ValueError
+ lastkey = k
+ r[k], f = decode_func[x[f]](x, f)
+ return (r, f + 1)
+
+decode_func = {}
+decode_func['l'] = decode_list
+decode_func['d'] = decode_dict
+decode_func['i'] = decode_int
+decode_func['0'] = decode_string
+decode_func['1'] = decode_string
+decode_func['2'] = decode_string
+decode_func['3'] = decode_string
+decode_func['4'] = decode_string
+decode_func['5'] = decode_string
+decode_func['6'] = decode_string
+decode_func['7'] = decode_string
+decode_func['8'] = decode_string
+decode_func['9'] = decode_string
+
+def bdecode(x):
+ try:
+ r, l = decode_func[x[0]](x, 0)
+ except (IndexError, KeyError, ValueError):
+ raise BTFailure, _("not a valid bencoded string")
+ if l != len(x):
+ raise BTFailure, _("invalid bencoded value (data after valid prefix)")
+ return r
+
+from types import StringType, IntType, LongType, DictType, ListType, TupleType
+
+
+class Bencached(object):
+
+ __slots__ = ['bencoded']
+
+ def __init__(self, s):
+ self.bencoded = s
+
+def encode_bencached(x,r):
+ r.append(x.bencoded)
+
+def encode_int(x, r):
+ r.extend(('i', str(x), 'e'))
+
+def encode_bool(x, r):
+ if x:
+ encode_int(1, r)
+ else:
+ encode_int(0, r)
+
+def encode_string(x, r):
+ r.extend((str(len(x)), ':', x))
+
+def encode_list(x, r):
+ r.append('l')
+ for i in x:
+ encode_func[type(i)](i, r)
+ r.append('e')
+
+def encode_dict(x,r):
+ r.append('d')
+ ilist = x.items()
+ ilist.sort()
+ for k, v in ilist:
+ r.extend((str(len(k)), ':', k))
+ encode_func[type(v)](v, r)
+ r.append('e')
+
+encode_func = {}
+encode_func[Bencached] = encode_bencached
+encode_func[IntType] = encode_int
+encode_func[LongType] = encode_int
+encode_func[StringType] = encode_string
+encode_func[ListType] = encode_list
+encode_func[TupleType] = encode_list
+encode_func[DictType] = encode_dict
+
+try:
+ from types import BooleanType
+ encode_func[BooleanType] = encode_bool
+except ImportError:
+ pass
+
+def bencode(x):
+ r = []
+ encode_func[type(x)](x, r)
+ return ''.join(r)
diff --git a/BitTorrent/bitfield.py b/BitTorrent/bitfield.py
new file mode 100644
index 0000000..f9fb511
--- /dev/null
+++ b/BitTorrent/bitfield.py
@@ -0,0 +1,77 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala, and John Hoffman
+
+from array import array
+
+from BitTorrent.obsoletepythonsupport import *
+
+counts = [chr(sum([(i >> j) & 1 for j in xrange(8)])) for i in xrange(256)]
+counts = ''.join(counts)
+
+
+class Bitfield:
+
+ def __init__(self, length, bitstring=None):
+ self.length = length
+ rlen, extra = divmod(length, 8)
+ if bitstring is None:
+ self.numfalse = length
+ if extra:
+ self.bits = array('B', chr(0) * (rlen + 1))
+ else:
+ self.bits = array('B', chr(0) * rlen)
+ else:
+ if extra:
+ if len(bitstring) != rlen + 1:
+ raise ValueError
+ if (ord(bitstring[-1]) << extra) & 0xFF != 0:
+ raise ValueError
+ else:
+ if len(bitstring) != rlen:
+ raise ValueError
+ c = counts
+ self.numfalse = length - sum(array('B',
+ bitstring.translate(counts)))
+ if self.numfalse != 0:
+ self.bits = array('B', bitstring)
+ else:
+ self.bits = None
+
+ def __setitem__(self, index, val):
+ assert val
+ pos = index >> 3
+ mask = 128 >> (index & 7)
+ if self.bits[pos] & mask:
+ return
+ self.bits[pos] |= mask
+ self.numfalse -= 1
+ if self.numfalse == 0:
+ self.bits = None
+
+ def __getitem__(self, index):
+ bits = self.bits
+ if bits is None:
+ return 1
+ return bits[index >> 3] & 128 >> (index & 7)
+
+ def __len__(self):
+ return self.length
+
+ def tostring(self):
+ if self.bits is None:
+ rlen, extra = divmod(self.length, 8)
+ r = chr(0xFF) * rlen
+ if extra:
+ r += chr((0xFF << (8 - extra)) & 0xFF)
+ return r
+ else:
+ return self.bits.tostring()
diff --git a/BitTorrent/btformats.py b/BitTorrent/btformats.py
new file mode 100644
index 0000000..97e62df
--- /dev/null
+++ b/BitTorrent/btformats.py
@@ -0,0 +1,140 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+import re
+
+from BitTorrent import BTFailure
+
+allowed_path_re = re.compile(r'^[^/\\.~][^/\\]*$')
+
+ints = (long, int)
+
+def check_info(info, check_paths=True):
+ if type(info) != dict:
+ raise BTFailure, _("bad metainfo - not a dictionary")
+ pieces = info.get('pieces')
+ if type(pieces) != str or len(pieces) % 20 != 0:
+ raise BTFailure, _("bad metainfo - bad pieces key")
+ piecelength = info.get('piece length')
+ if type(piecelength) not in ints or piecelength <= 0:
+ raise BTFailure, _("bad metainfo - illegal piece length")
+ name = info.get('name')
+ if type(name) != str:
+ raise BTFailure, _("bad metainfo - bad name")
+ if not allowed_path_re.match(name):
+ raise BTFailure, _("name %s disallowed for security reasons") % name
+ if info.has_key('files') == info.has_key('length'):
+ raise BTFailure, _("single/multiple file mix")
+ if info.has_key('length'):
+ length = info.get('length')
+ if type(length) not in ints or length < 0:
+ raise BTFailure, _("bad metainfo - bad length")
+ else:
+ files = info.get('files')
+ if type(files) != list:
+ raise BTFailure, _('bad metainfo - "files" is not a list of files')
+ for f in files:
+ if type(f) != dict:
+ raise BTFailure, _("bad metainfo - file entry must be a dict")
+ length = f.get('length')
+ if type(length) not in ints or length < 0:
+ raise BTFailure, _("bad metainfo - bad length")
+ path = f.get('path')
+ if type(path) != list or path == []:
+ raise BTFailure, _("bad metainfo - bad path")
+ for p in path:
+ if type(p) != str:
+ raise BTFailure, _("bad metainfo - bad path dir")
+ if check_paths and not allowed_path_re.match(p):
+ raise BTFailure, _("path %s disallowed for security reasons") % p
+ f = ['/'.join(x['path']) for x in files]
+ f.sort()
+ i = iter(f)
+ try:
+ name2 = i.next()
+ while True:
+ name1 = name2
+ name2 = i.next()
+ if name2.startswith(name1):
+ if name1 == name2:
+ raise BTFailure, _("bad metainfo - duplicate path")
+ elif name2[len(name1)] == '/':
+ raise BTFailure(_("bad metainfo - name used as both"
+ "file and subdirectory name"))
+ except StopIteration:
+ pass
+
+def check_message(message, check_paths=True):
+ if type(message) != dict:
+ raise BTFailure, _("bad metainfo - wrong object type")
+ check_info(message.get('info'), check_paths)
+ if type(message.get('announce')) != str and type(message.get('nodes')) != list:
+ raise BTFailure, _("bad metainfo - no announce URL string")
+ if message.has_key('nodes'):
+ check_nodes(message.get('nodes'))
+
+def check_nodes(nodes):
+ ## note, these strings need changing
+ for node in nodes:
+ if type(node) != list:
+ raise BTFailure, _("bad metainfo - node is not a list")
+ if len(node) != 2:
+ raise BTFailure, _("bad metainfo - node list must have only two elements")
+ host, port = node
+ if type(host) != str:
+ raise BTFailure, _("bad metainfo - node host must be a string")
+ if type(port) != int:
+ raise BTFailure, _("bad metainfo - node port must be an integer")
+
+def check_peers(message):
+ if type(message) != dict:
+ raise BTFailure
+ if message.has_key('failure reason'):
+ if type(message['failure reason']) != str:
+ raise BTFailure, _("failure reason must be a string")
+ return
+ if message.has_key('warning message'):
+ if type(message['warning message']) != str:
+ raise BTFailure, _("warning message must be a string")
+ peers = message.get('peers')
+ if type(peers) == list:
+ for p in peers:
+ if type(p) != dict:
+ raise BTFailure, _("invalid entry in peer list - peer info must be a dict")
+ if type(p.get('ip')) != str:
+ raise BTFailure, _("invalid entry in peer list - peer ip must be a string")
+ port = p.get('port')
+ if type(port) not in ints or p <= 0:
+ raise BTFailure, _("invalid entry in peer list - peer port must be an integer")
+ if p.has_key('peer id'):
+ peerid = p.get('peer id')
+ if type(peerid) != str or len(peerid) != 20:
+ raise BTFailure, _("invalid entry in peer list - invalid peerid")
+ elif type(peers) != str or len(peers) % 6 != 0:
+ raise BTFailure, _("invalid peer list")
+ interval = message.get('interval', 1)
+ if type(interval) not in ints or interval <= 0:
+ raise BTFailure, _("invalid announce interval")
+ minint = message.get('min interval', 1)
+ if type(minint) not in ints or minint <= 0:
+ raise BTFailure, _("invalid min announce interval")
+ if type(message.get('tracker id', '')) != str:
+ raise BTFailure, _("invalid tracker id")
+ npeers = message.get('num peers', 0)
+ if type(npeers) not in ints or npeers < 0:
+ raise BTFailure, _("invalid peer count")
+ dpeers = message.get('done peers', 0)
+ if type(dpeers) not in ints or dpeers < 0:
+ raise BTFailure, _("invalid seed count")
+ last = message.get('last', 0)
+ if type(last) not in ints or last < 0:
+ raise BTFailure, _('invalid "last" entry')
diff --git a/BitTorrent/configfile.py b/BitTorrent/configfile.py
new file mode 100644
index 0000000..6f4a1e3
--- /dev/null
+++ b/BitTorrent/configfile.py
@@ -0,0 +1,222 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Uoti Urpala and Matt Chisholm
+
+import os
+import sys
+import gettext
+import locale
+
+# Python 2.2 doesn't have RawConfigParser
+try:
+ from ConfigParser import RawConfigParser
+except ImportError:
+ from ConfigParser import ConfigParser as RawConfigParser
+
+from ConfigParser import MissingSectionHeaderError, ParsingError
+from BitTorrent import parseargs
+from BitTorrent import app_name, version, ERROR, BTFailure
+from BitTorrent.platform import get_config_dir, locale_root, is_frozen_exe
+from BitTorrent.defaultargs import MYTRUE
+from BitTorrent.zurllib import bind_tracker_connection, set_zurllib_rawserver
+
+MAIN_CONFIG_FILE = 'ui_config'
+TORRENT_CONFIG_FILE = 'torrent_config'
+
+alt_uiname = {'bittorrent':'btdownloadgui',
+ 'maketorrent':'btmaketorrentgui',}
+
+def _read_config(filename):
+ # check for bad config files (Windows corrupts them all the time)
+ p = RawConfigParser()
+ fp = None
+ try:
+ fp = open(filename)
+ except IOError:
+ pass
+
+ if fp is not None:
+ try:
+ p.readfp(fp, filename=filename)
+ except MissingSectionHeaderError:
+ fp.close()
+ del fp
+ bad_config(filename)
+ except ParsingError:
+ fp.close()
+ del fp
+ bad_config(filename)
+ else:
+ fp.close()
+ return p
+
+
+def _write_config(error_callback, filename, p):
+ try:
+ f = file(filename, 'w')
+ p.write(f)
+ f.close()
+ except Exception, e:
+ try:
+ f.close()
+ except:
+ pass
+ error_callback(ERROR, _("Could not permanently save options: ")+
+ str(e))
+
+
+def bad_config(filename):
+ base_bad_filename = filename + '.broken'
+ bad_filename = base_bad_filename
+ i = 0
+ while os.access(bad_filename, os.F_OK):
+ bad_filename = base_bad_filename + str(i)
+ i+=1
+ os.rename(filename, bad_filename)
+ sys.stderr.write(_("Error reading config file. "
+ "Old config file stored in \"%s\"") % bad_filename)
+
+
+def get_config(defaults, section):
+ dir_root = get_config_dir()
+
+ if dir_root is None:
+ return {}
+
+ configdir = os.path.join(dir_root, '.bittorrent')
+
+ if not os.path.isdir(configdir):
+ try:
+ os.mkdir(configdir, 0700)
+ except:
+ pass
+
+ p = _read_config(os.path.join(configdir, 'config'))
+ values = {}
+ if p.has_section(section):
+ for name, value in p.items(section):
+ if name in defaults:
+ values[name] = value
+ if p.has_section('common'):
+ for name, value in p.items('common'):
+ if name in defaults and name not in values:
+ values[name] = value
+ if defaults.get('data_dir') == '' and \
+ 'data_dir' not in values and os.path.isdir(configdir):
+ datadir = os.path.join(configdir, 'data')
+ values['data_dir'] = datadir
+ parseargs.parse_options(defaults, values)
+ return values
+
+
+def save_ui_config(defaults, section, save_options, error_callback):
+ filename = os.path.join(defaults['data_dir'], MAIN_CONFIG_FILE)
+ p = _read_config(filename)
+ p.remove_section(section)
+ if p.has_section(alt_uiname[section]):
+ p.remove_section(alt_uiname[section])
+ p.add_section(section)
+ for name in save_options:
+ if defaults.has_key(name):
+ p.set(section, name, defaults[name])
+ else:
+ err_str = _("Configuration option mismatch: '%s'") % name
+ if is_frozen_exe:
+ err_str = _("You must quit %s and reinstall it. (%s)") % (app_name, err_str)
+ error_callback(ERROR, err_str)
+ _write_config(error_callback, filename, p)
+
+
+def save_torrent_config(path, infohash, config, error_callback):
+ section = infohash.encode('hex')
+ filename = os.path.join(path, TORRENT_CONFIG_FILE)
+ p = _read_config(filename)
+ p.remove_section(section)
+ p.add_section(section)
+ for key, value in config.items():
+ p.set(section, key, value)
+ _write_config(error_callback, filename, p)
+
+def read_torrent_config(global_config, path, infohash, error_callback):
+ section = infohash.encode('hex')
+ filename = os.path.join(path, TORRENT_CONFIG_FILE)
+ p = _read_config(filename)
+ if not p.has_section(section):
+ return {}
+ else:
+ c = {}
+ for name, value in p.items(section):
+ if global_config.has_key(name):
+ t = type(global_config[name])
+ if t == bool:
+ c[name] = value in ('1', 'True', MYTRUE, True)
+ else:
+ c[name] = type(global_config[name])(value)
+ return c
+
+def remove_torrent_config(path, infohash, error_callback):
+ section = infohash.encode('hex')
+ filename = os.path.join(path, TORRENT_CONFIG_FILE)
+ p = _read_config(filename)
+ if p.has_section(section):
+ p.remove_section(section)
+ _write_config(error_callback, filename, p)
+
+def parse_configuration_and_args(defaults, uiname, arglist=[], minargs=0,
+ maxargs=0):
+ defconfig = dict([(name, value) for (name, value, doc) in defaults])
+ if arglist[0:] == ['--version']:
+ print version
+ sys.exit(0)
+
+ if arglist[0:] in (['--help'], ['-h'], ['--usage'], ['-?']):
+ parseargs.printHelp(uiname, defaults)
+ sys.exit(0)
+
+ presets = get_config(defconfig, uiname)
+ config, args = parseargs.parseargs(arglist, defaults, minargs, maxargs,
+ presets)
+ datadir = config['data_dir']
+ if datadir:
+ if uiname in ('bittorrent', 'maketorrent'):
+ values = {}
+ p = _read_config(os.path.join(datadir, MAIN_CONFIG_FILE))
+ if not p.has_section(uiname) and p.has_section(alt_uiname[uiname]):
+ uiname = alt_uiname[uiname]
+ if p.has_section(uiname):
+ for name, value in p.items(uiname):
+ if name in defconfig:
+ values[name] = value
+ parseargs.parse_options(defconfig, values)
+ presets.update(values)
+ config, args = parseargs.parseargs(arglist, defaults, minargs,
+ maxargs, presets)
+
+ for d in ('', 'resume', 'metainfo'):
+ ddir = os.path.join(datadir, d)
+ try:
+ if not os.path.exists(ddir):
+ os.mkdir(ddir, 0700)
+ except:
+ pass
+
+ if config['language'] != '':
+ try:
+ lang = gettext.translation('bittorrent', locale_root,
+ languages=[config['language']])
+ lang.install()
+ except IOError:
+ # don't raise an error, just continue untranslated
+ sys.stderr.write(_('Could not find translation for language "%s"\n') %
+ config['language'])
+ if config.has_key('bind') and ['bind'] != '':
+ bind_tracker_connection(config['bind'])
+ return config, args
diff --git a/BitTorrent/defaultargs.py b/BitTorrent/defaultargs.py
new file mode 100644
index 0000000..2c7af5c
--- /dev/null
+++ b/BitTorrent/defaultargs.py
@@ -0,0 +1,306 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+
+# False and True are not distinct from 0 and 1 under Python 2.2,
+# and we want to handle boolean options differently.
+class MyBool(object):
+
+ def __init__(self, value):
+ self.value = value
+
+ def __repr__(self):
+ if self.value:
+ return 'True'
+ return 'False'
+
+ def __nonzero__(self):
+ return self.value
+
+MYTRUE = MyBool(True)
+MYFALSE = MyBool(False)
+
+import os
+### add your favorite here
+BAD_LIBC_WORKAROUND_DEFAULT = MYFALSE
+if os.name == 'posix':
+ if os.uname()[0] in ['Darwin']:
+ BAD_LIBC_WORKAROUND_DEFAULT = MYTRUE
+
+MIN_INCOMPLETE = 100
+if os.name == 'nt':
+ from BitTorrent.platform import win_version_num
+ # starting in XP SP2 the incomplete outgoing connection limit was set to 10
+ if win_version_num >= (2, 5, 1, 2, 0):
+ MIN_INCOMPLETE = 10
+
+from BitTorrent import languages
+
+basic_options = [
+ ('data_dir', '',
+ _("directory under which variable data such as fastresume information "
+ "and GUI state is saved. Defaults to subdirectory 'data' of the "
+ "bittorrent config directory.")),
+ ('filesystem_encoding', '',
+ _("character encoding used on the local filesystem. "
+ "If left empty, autodetected. "
+ "Autodetection doesn't work under python versions older than 2.3")),
+ ('language', '',
+ _("ISO Language code to use") + ': ' + ', '.join(languages)),
+ ]
+
+common_options = [
+ ('ip', '',
+ _("ip to report to the tracker (has no effect unless you are on the same "
+ "local network as the tracker)")),
+ ('forwarded_port', 0,
+ _("world-visible port number if it's different from the one the client "
+ "listens on locally")),
+ ('minport', 6881,
+ _("minimum port to listen on, counts up if unavailable")),
+ ('maxport', 6999,
+ _("maximum port to listen on")),
+ ('bind', '',
+ _("ip to bind to locally")),
+ ('display_interval', .5,
+ _("seconds between updates of displayed information")),
+ ('rerequest_interval', 5 * 60,
+ _("minutes to wait between requesting more peers")),
+ ('min_peers', 20,
+ _("minimum number of peers to not do rerequesting")),
+ ('max_initiate', 60,
+ _("number of peers at which to stop initiating new connections")),
+ ('max_incomplete', MIN_INCOMPLETE,
+ _("max number of outgoing incomplete connections")),
+ ('max_allow_in', 80,
+ _("maximum number of connections to allow, after this new incoming "
+ "connections will be immediately closed")),
+ ('check_hashes', MYTRUE,
+ _("whether to check hashes on disk")),
+ ('max_upload_rate', 20,
+ _("maximum kB/s to upload at, 0 means no limit")),
+ ('min_uploads', 2,
+ _("the number of uploads to fill out to with extra optimistic unchokes")),
+ ('max_files_open', 50,
+ _("the maximum number of files in a multifile torrent to keep open at a "
+ "time, 0 means no limit. Used to avoid running out of file descriptors.")),
+ ('start_trackerless_client', MYTRUE,
+ _("Initialize a trackerless client. This must be enabled in order to download trackerless torrents.")),
+ ('upnp', MYTRUE,
+ _("Enable automatic port mapping")+' (UPnP)'),
+ ]
+
+
+rare_options = [
+ ('keepalive_interval', 120.0,
+ _("number of seconds to pause between sending keepalives")),
+ ('download_slice_size', 2 ** 14,
+ _("how many bytes to query for per request.")),
+ ('max_message_length', 2 ** 23,
+ _("maximum length prefix encoding you'll accept over the wire - larger "
+ "values get the connection dropped.")),
+ ('socket_timeout', 300.0,
+ _("seconds to wait between closing sockets which nothing has been "
+ "received on")),
+ ('timeout_check_interval', 60.0,
+ _("seconds to wait between checking if any connections have timed out")),
+ ('max_slice_length', 16384,
+ _("maximum length slice to send to peers, close connection if a larger "
+ "request is received")),
+ ('max_rate_period', 20.0,
+ _("maximum time interval over which to estimate the current upload and download rates")),
+ ('max_rate_period_seedtime', 100.0,
+ _("maximum time interval over which to estimate the current seed rate")),
+ ('max_announce_retry_interval', 1800,
+ _("maximum time to wait between retrying announces if they keep failing")),
+ ('snub_time', 30.0,
+ _("seconds to wait for data to come in over a connection before assuming "
+ "it's semi-permanently choked")),
+ ('rarest_first_cutoff', 4,
+ _("number of downloads at which to switch from random to rarest first")),
+ ('upload_unit_size', 1380,
+ _("how many bytes to write into network buffers at once.")),
+ ('retaliate_to_garbled_data', MYTRUE,
+ _("refuse further connections from addresses with broken or intentionally "
+ "hostile peers that send incorrect data")),
+ ('one_connection_per_ip', MYTRUE,
+ _("do not connect to several peers that have the same IP address")),
+ ('peer_socket_tos', 8,
+ _("if nonzero, set the TOS option for peer connections to this value")),
+ ('bad_libc_workaround', BAD_LIBC_WORKAROUND_DEFAULT,
+ _("enable workaround for a bug in BSD libc that makes file reads very slow.")),
+ ('tracker_proxy', '',
+ _("address of HTTP proxy to use for tracker connections")),
+ ('close_with_rst', 0,
+ _("close connections with RST and avoid the TCP TIME_WAIT state")),
+ ('twisted', -1,
+ _("Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted")),
+ ]
+
+
+def get_defaults(ui):
+ assert ui in ("bittorrent" , "bittorrent-curses", "bittorrent-console" ,
+ "maketorrent", "maketorrent-console",
+ "launchmany-curses", "launchmany-console" ,
+ )
+ r = []
+
+ if ui.startswith('bittorrent') or ui.startswith('launchmany'):
+ r.extend(common_options)
+
+ if ui == 'bittorrent':
+ r.extend([
+ ('save_as', '',
+ _("file name (for single-file torrents) or directory name (for "
+ "batch torrents) to save the torrent as, overriding the default "
+ "name in the torrent. See also --save_in, if neither is "
+ "specified the user will be asked for save location")),
+ ('advanced', MYFALSE,
+ _("display advanced user interface")),
+ ('next_torrent_time', 300,
+ _("the maximum number of minutes to seed a completed torrent "
+ "before stopping seeding")),
+ ('next_torrent_ratio', 80,
+ _("the minimum upload/download ratio, in percent, to achieve "
+ "before stopping seeding. 0 means no limit.")),
+ ('last_torrent_ratio', 0,
+ _("the minimum upload/download ratio, in percent, to achieve "
+ "before stopping seeding the last torrent. 0 means no limit.")),
+ ('seed_forever', MYFALSE,
+ _("Seed each completed torrent indefinitely "
+ "(until the user cancels it)")),
+ ('seed_last_forever', MYTRUE,
+ _("Seed the last torrent indefinitely "
+ "(until the user cancels it)")),
+ ('pause', MYFALSE,
+ _("start downloader in paused state")),
+ ('start_torrent_behavior', 'replace',
+ _('specifies how the app should behave when the user manually '
+ 'tries to start another torrent: "replace" means always replace '
+ 'the running torrent with the new one, "add" means always add '
+ 'the running torrent in parallel, and "ask" means ask the user '
+ 'each time.')),
+ ('open_from', '',
+ 'local directory to look in for .torrent files to open'),
+ ('ask_for_save', MYFALSE,
+ 'whether or not to ask for a location to save downloaded files in'),
+ ('start_minimized', MYFALSE,
+ _("Start BitTorrent minimized")),
+ ('new_version', '',
+ _("override the version provided by the http version check "
+ "and enable version check debugging mode")),
+ ('current_version', '',
+ _("override the current version used in the version check "
+ "and enable version check debugging mode")),
+ ('geometry', '',
+ _("specify window size and position, in the format: "
+ "WIDTHxHEIGHT+XOFFSET+YOFFSET")),
+ ])
+
+ if os.name == 'nt':
+ r.extend([
+ ('launch_on_startup', MYTRUE,
+ _("Launch BitTorrent when Windows starts")),
+ ('minimize_to_tray', MYTRUE,
+ _("Minimize to system tray")),
+ ])
+
+ if ui in ('bittorrent-console', 'bittorrent-curses'):
+ r.append(
+ ('save_as', '',
+ _("file name (for single-file torrents) or directory name (for "
+ "batch torrents) to save the torrent as, overriding the "
+ "default name in the torrent. See also --save_in")))
+
+ if ui.startswith('bittorrent'):
+ r.extend([
+ ('max_uploads', -1,
+ _("the maximum number of uploads to allow at once. -1 means a "
+ "(hopefully) reasonable number based on --max_upload_rate. "
+ "The automatic values are only sensible when running one "
+ "torrent at a time.")),
+ ('save_in', '',
+ _("local directory where the torrent contents will be saved. The "
+ "file (single-file torrents) or directory (batch torrents) will "
+ "be created under this directory using the default name "
+ "specified in the .torrent file. See also --save_as.")),
+ ('responsefile', '',
+ _("deprecated, do not use")),
+ ('url', '',
+ _("deprecated, do not use")),
+ ('ask_for_save', 0,
+ _("whether or not to ask for a location to save downloaded files in")),
+ ])
+
+ if ui.startswith('launchmany'):
+ r.extend([
+ ('max_uploads', 6,
+ _("the maximum number of uploads to allow at once. -1 means a "
+ "(hopefully) reasonable number based on --max_upload_rate. The "
+ "automatic values are only sensible when running one torrent at "
+ "a time.")),
+ ('save_in', '',
+ _("local directory where the torrents will be saved, using a "
+ "name determined by --saveas_style. If this is left empty "
+ "each torrent will be saved under the directory of the "
+ "corresponding .torrent file")),
+ ('parse_dir_interval', 60,
+ _("how often to rescan the torrent directory, in seconds") ),
+ ('launch_delay', 0,
+ _("wait this many seconds after noticing a torrent before starting it, to avoid race with tracker")),
+ ('saveas_style', 4,
+ _("How to name torrent downloads: "
+ "1: use name OF torrent file (minus .torrent); "
+ "2: use name encoded IN torrent file; "
+ "3: create a directory with name OF torrent file "
+ "(minus .torrent) and save in that directory using name "
+ "encoded IN torrent file; "
+ "4: if name OF torrent file (minus .torrent) and name "
+ "encoded IN torrent file are identical, use that "
+ "name (style 1/2), otherwise create an intermediate "
+ "directory as in style 3; "
+ "CAUTION: options 1 and 2 have the ability to "
+ "overwrite files without warning and may present "
+ "security issues."
+ ) ),
+ ('display_path', ui == 'launchmany-console' and MYTRUE or MYFALSE,
+ _("whether to display the full path or the torrent contents for "
+ "each torrent") ),
+ ])
+
+ if ui.startswith('launchmany') or ui == 'maketorrent':
+ r.append(
+ ('torrent_dir', '',
+ _("directory to look for .torrent files (semi-recursive)")),)
+
+ if ui in ('bittorrent-curses', 'bittorrent-console'):
+ r.append(
+ ('spew', MYFALSE,
+ _("whether to display diagnostic info to stdout")))
+
+ if ui.startswith('maketorrent'):
+ r.extend([
+ ('piece_size_pow2', 18,
+ _("which power of two to set the piece size to")),
+ ('tracker_name', 'http://my.tracker:6969/announce',
+ _("default tracker name")),
+ ('tracker_list', '', ''),
+ ('use_tracker', MYTRUE,
+ _("if false then make a trackerless torrent, instead of "
+ "announce URL, use reliable node in form of <ip>:<port> or an "
+ "empty string to pull some nodes from your routing table")),
+ ])
+
+ r.extend(basic_options)
+
+ if ui.startswith('bittorrent') or ui.startswith('launchmany'):
+ r.extend(rare_options)
+
+ return r
diff --git a/BitTorrent/defer.py b/BitTorrent/defer.py
new file mode 100644
index 0000000..4531271
--- /dev/null
+++ b/BitTorrent/defer.py
@@ -0,0 +1,56 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+class Deferred(object):
+ def __init__(self):
+ self.callbacks = []
+ self.errbacks = []
+ self.calledBack = False
+ self.erredBack = False
+ self.results = []
+ self.failures = []
+
+ def addCallback(self, cb, args=(), kwargs={}):
+ assert callable(cb)
+ self.callbacks.append((cb, args, kwargs))
+ if self.calledBack:
+ self.doCallbacks(self.results, [(cb, args, kwargs)])
+ return self
+
+ def addErrback(self, cb, args=(), kwargs={}):
+ assert callable(cb)
+ self.errbacks.append((cb, args, kwargs))
+ if self.erredBack:
+ self.doCallbacks(self.failures, [(cb, args, kwargs)])
+ return self
+
+ def addCallbacks(self, cb, eb, args=(), kwargs={},
+ ebargs=(), ebkwargs={}):
+ assert callable(cb)
+ assert callable(eb)
+ self.addCallback(cb, args, kwargs)
+ self.addErrback(eb, ebargs, ebkwargs)
+
+ def callback(self, result):
+ self.results.append(result)
+ self.calledBack = True
+ if self.callbacks:
+ self.doCallbacks([result], self.callbacks)
+
+ def errback(self, failed):
+ self.failures.append(failed)
+ self.erredBack = True
+ if self.errbacks:
+ self.doCallbacks([failed], self.errbacks)
+
+ def doCallbacks(self, results, callbacks):
+ for result in results:
+ for cb, args, kwargs in callbacks:
+ result = cb(result, *args, **kwargs)
diff --git a/BitTorrent/download.py b/BitTorrent/download.py
new file mode 100644
index 0000000..27f2bfd
--- /dev/null
+++ b/BitTorrent/download.py
@@ -0,0 +1,593 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen and Uoti Urpala
+
+from __future__ import division
+# required for python 2.2
+from __future__ import generators
+
+import os
+import sys
+import threading
+import errno
+import gc
+from sha import sha
+from socket import error as socketerror
+from random import seed
+from time import time
+from cStringIO import StringIO
+from traceback import print_exc
+from math import sqrt
+
+from BitTorrent.btformats import check_message
+from BitTorrent.Choker import Choker
+from BitTorrent.Storage import Storage, FilePool
+from BitTorrent.StorageWrapper import StorageWrapper
+from BitTorrent.Uploader import Upload
+from BitTorrent.Downloader import Downloader
+from BitTorrent.Encoder import Encoder, SingleportListener
+from BitTorrent.zurllib import set_zurllib_rawserver, add_unsafe_thread
+from BitTorrent import PeerID
+
+from BitTorrent.RateLimiter import MultiRateLimiter as RateLimiter
+from BitTorrent.RateLimiter import RateLimitedGroup
+
+from BitTorrent.RawServer_magic import RawServer
+from BitTorrent.NatTraversal import NatTraverser
+from BitTorrent.Rerequester import Rerequester, DHTRerequester
+from BitTorrent.DownloaderFeedback import DownloaderFeedback
+from BitTorrent.RateMeasure import RateMeasure
+from BitTorrent.CurrentRateMeasure import Measure
+from BitTorrent.PiecePicker import PiecePicker
+from BitTorrent.ConvertedMetainfo import set_filesystem_encoding
+from BitTorrent import version
+from BitTorrent import BTFailure, BTShutdown, INFO, WARNING, ERROR, CRITICAL
+
+from khashmir.utkhashmir import UTKhashmir
+from khashmir import const
+
+class Feedback(object):
+
+ def finished(self, torrent):
+ pass
+
+ def failed(self, torrent, is_external):
+ pass
+
+ def error(self, torrent, level, text):
+ pass
+
+ def exception(self, torrent, text):
+ self.error(torrent, CRITICAL, text)
+
+ def started(self, torrent):
+ pass
+
+
+class Multitorrent(object):
+
+ def __init__(self, config, doneflag, errorfunc, listen_fail_ok=False):
+ self.dht = None
+ self.config = config
+ self.errorfunc = errorfunc
+ self.rawserver = RawServer(doneflag, config, errorfunc=errorfunc,
+ tos=config['peer_socket_tos'])
+ set_zurllib_rawserver(self.rawserver)
+ add_unsafe_thread()
+ self.nattraverser = NatTraverser(self.rawserver, logfunc=errorfunc)
+ self.singleport_listener = SingleportListener(self.rawserver,
+ self.nattraverser)
+ self.ratelimiter = RateLimiter(self.rawserver.add_task)
+ self.ratelimiter.set_parameters(config['max_upload_rate'],
+ config['upload_unit_size'])
+ self._find_port(listen_fail_ok)
+ self.filepool = FilePool(config['max_files_open'])
+ set_filesystem_encoding(config['filesystem_encoding'],
+ errorfunc)
+
+
+ def _find_port(self, listen_fail_ok=True):
+ e = _("maxport less than minport - no ports to check")
+ if self.config['minport'] < 1024:
+ self.config['minport'] = 1024
+ for port in xrange(self.config['minport'], self.config['maxport'] + 1):
+ try:
+ self.singleport_listener.open_port(port, self.config)
+ if self.config['start_trackerless_client']:
+ self.dht = UTKhashmir(self.config['bind'],
+ self.singleport_listener.get_port(),
+ self.config['data_dir'], self.rawserver,
+ int(self.config['max_upload_rate'] * 1024 * 0.01),
+ rlcount=self.ratelimiter.increase_offset,
+ config=self.config)
+ break
+ except socketerror, e:
+ pass
+ else:
+ if not listen_fail_ok:
+ raise BTFailure, _("Could not open a listening port: %s.") % str(e)
+ self.errorfunc(CRITICAL,
+ _("Could not open a listening port: %s. ") %
+ str(e) +
+ _("Check your port range settings."))
+
+ def close_listening_socket(self):
+ self.singleport_listener.close_sockets()
+
+ def start_torrent(self, metainfo, config, feedback, filename):
+ torrent = _SingleTorrent(self.rawserver, self.singleport_listener,
+ self.ratelimiter, self.filepool, config, self.dht)
+ torrent.rlgroup = RateLimitedGroup(config['max_upload_rate'], torrent.got_exception)
+ self.rawserver.add_context(torrent)
+ def start():
+ torrent.start_download(metainfo, feedback, filename)
+ self.rawserver.external_add_task(start, 0, context=torrent)
+ return torrent
+
+ def set_option(self, option, value):
+ self.config[option] = value
+ if option in ['max_upload_rate', 'upload_unit_size']:
+ self.ratelimiter.set_parameters(self.config['max_upload_rate'],
+ self.config['upload_unit_size'])
+ elif option == 'max_files_open':
+ self.filepool.set_max_files_open(value)
+ elif option == 'maxport':
+ if not self.config['minport'] <= self.singleport_listener.port <= \
+ self.config['maxport']:
+ self._find_port()
+
+ def get_completion(self, config, metainfo, save_path, filelist=False):
+ if not config['data_dir']:
+ return None
+ infohash = metainfo.infohash
+ if metainfo.is_batch:
+ myfiles = [os.path.join(save_path, f) for f in metainfo.files_fs]
+ else:
+ myfiles = [save_path]
+
+ if metainfo.total_bytes == 0:
+ if filelist:
+ return None
+ return 1
+ try:
+ s = Storage(None, None, zip(myfiles, metainfo.sizes),
+ check_only=True)
+ except:
+ return None
+ filename = os.path.join(config['data_dir'], 'resume',
+ infohash.encode('hex'))
+ try:
+ f = file(filename, 'rb')
+ except:
+ f = None
+ try:
+ r = s.check_fastresume(f, filelist, metainfo.piece_length,
+ len(metainfo.hashes), myfiles)
+ except:
+ r = None
+ if f is not None:
+ f.close()
+ if r is None:
+ return None
+ if filelist:
+ return r[0] / metainfo.total_bytes, r[1], r[2]
+ return r / metainfo.total_bytes
+
+
+class _SingleTorrent(object):
+
+ def __init__(self, rawserver, singleport_listener, ratelimiter, filepool,
+ config, dht):
+ self._rawserver = rawserver
+ self._singleport_listener = singleport_listener
+ self._ratelimiter = ratelimiter
+ self._filepool = filepool
+ self._dht = dht
+ self._storage = None
+ self._storagewrapper = None
+ self._ratemeasure = None
+ self._upmeasure = None
+ self._downmeasure = None
+ self._encoder = None
+ self._rerequest = None
+ self._statuscollecter = None
+ self._announced = False
+ self._listening = False
+ self.reserved_ports = []
+ self.reported_port = None
+ self._myfiles = None
+ self.started = False
+ self.is_seed = False
+ self.closed = False
+ self.infohash = None
+ self.total_bytes = None
+ self._doneflag = threading.Event()
+ self.finflag = threading.Event()
+ self._hashcheck_thread = None
+ self._contfunc = None
+ self._activity = (_("Initial startup"), 0)
+ self.feedback = None
+ self.errors = []
+ self.rlgroup = None
+ self.config = config
+
+ def start_download(self, *args, **kwargs):
+ it = self._start_download(*args, **kwargs)
+ def cont():
+ try:
+ it.next()
+ except StopIteration:
+ self._contfunc = None
+ def contfunc():
+ self._rawserver.external_add_task(cont, 0, context=self)
+ self._contfunc = contfunc
+ contfunc()
+
+ def _start_download(self, metainfo, feedback, save_path):
+ self.feedback = feedback
+ config = self.config
+
+ self.infohash = metainfo.infohash
+ self.total_bytes = metainfo.total_bytes
+ if not metainfo.reported_errors:
+ metainfo.show_encoding_errors(self._error)
+
+ myid = self._make_id()
+ seed(myid)
+ def schedfunc(func, delay):
+ self._rawserver.add_task(func, delay, context=self)
+ def externalsched(func, delay):
+ self._rawserver.external_add_task(func, delay, context=self)
+ if metainfo.is_batch:
+ myfiles = [os.path.join(save_path, f) for f in metainfo.files_fs]
+ else:
+ myfiles = [save_path]
+ self._filepool.add_files(myfiles, self)
+ self._myfiles = myfiles
+ self._storage = Storage(config, self._filepool, zip(myfiles,
+ metainfo.sizes))
+ resumefile = None
+ if config['data_dir']:
+ filename = os.path.join(config['data_dir'], 'resume',
+ self.infohash.encode('hex'))
+ if os.path.exists(filename):
+ try:
+ resumefile = file(filename, 'rb')
+ if self._storage.check_fastresume(resumefile) == 0:
+ resumefile.close()
+ resumefile = None
+ except Exception, e:
+ self._error(WARNING,
+ _("Could not load fastresume data: %s") % str(e)
+ + ' ' + _("Will perform full hash check."))
+ if resumefile is not None:
+ resumefile.close()
+ resumefile = None
+ def data_flunked(amount, index):
+ self._ratemeasure.data_rejected(amount)
+ self._error(INFO,
+ _("piece %d failed hash check, re-downloading it")
+ % index)
+ backthread_exception = []
+ def errorfunc(level, text):
+ def e():
+ self._error(level, text)
+ externalsched(e, 0)
+ def hashcheck():
+ def statusfunc(activity = None, fractionDone = 0):
+ if activity is None:
+ activity = self._activity[0]
+ self._activity = (activity, fractionDone)
+ try:
+ self._storagewrapper = StorageWrapper(self._storage,
+ config, metainfo.hashes, metainfo.piece_length,
+ self._finished, statusfunc, self._doneflag, data_flunked,
+ self.infohash, errorfunc, resumefile)
+ except:
+ backthread_exception.append(sys.exc_info())
+ self._contfunc()
+ thread = threading.Thread(target = hashcheck)
+ thread.setDaemon(False)
+ self._hashcheck_thread = thread
+ thread.start()
+ yield None
+ self._hashcheck_thread = None
+ if resumefile is not None:
+ resumefile.close()
+ if backthread_exception:
+ a, b, c = backthread_exception[0]
+ raise a, b, c
+
+ if self._storagewrapper.amount_left == 0:
+ self._finished()
+ choker = Choker(config, schedfunc, self.finflag.isSet)
+ upmeasure = Measure(config['max_rate_period'])
+ upmeasure_seedtime = Measure(config['max_rate_period_seedtime'])
+ downmeasure = Measure(config['max_rate_period'])
+ self._upmeasure = upmeasure
+ self._upmeasure_seedtime = upmeasure_seedtime
+ self._downmeasure = downmeasure
+ self._ratemeasure = RateMeasure(self._storagewrapper.
+ amount_left_with_partials)
+ picker = PiecePicker(len(metainfo.hashes), config)
+ for i in xrange(len(metainfo.hashes)):
+ if self._storagewrapper.do_I_have(i):
+ picker.complete(i)
+ for i in self._storagewrapper.stat_dirty:
+ picker.requested(i)
+ def kickpeer(connection):
+ def kick():
+ connection.close()
+ schedfunc(kick, 0)
+ def banpeer(ip):
+ self._encoder.ban(ip)
+ downloader = Downloader(config, self._storagewrapper, picker,
+ len(metainfo.hashes), downmeasure, self._ratemeasure.data_came_in,
+ kickpeer, banpeer)
+ def make_upload(connection):
+ return Upload(connection, self._ratelimiter, upmeasure,
+ upmeasure_seedtime, choker, self._storagewrapper,
+ config['max_slice_length'], config['max_rate_period'])
+
+
+ self.reported_port = self.config['forwarded_port']
+ if not self.reported_port:
+ self.reported_port = self._singleport_listener.get_port(self.change_port)
+ self.reserved_ports.append(self.reported_port)
+
+ if self._dht:
+ addContact = self._dht.addContact
+ else:
+ addContact = None
+ self._encoder = Encoder(make_upload, downloader, choker,
+ len(metainfo.hashes), self._ratelimiter, self._rawserver,
+ config, myid, schedfunc, self.infohash, self, addContact, self.reported_port)
+
+ self._singleport_listener.add_torrent(self.infohash, self._encoder)
+ self._listening = True
+ if metainfo.is_trackerless:
+ if not self._dht:
+ self._error(self, CRITICAL, _("Attempt to download a trackerless torrent with trackerless client turned off."))
+ return
+ else:
+ if len(self._dht.table.findNodes(metainfo.infohash, invalid=False)) < const.K:
+ for host, port in metainfo.nodes:
+ self._dht.addContact(host, port)
+ self._rerequest = DHTRerequester(config,
+ schedfunc, self._encoder.how_many_connections,
+ self._encoder.start_connection, externalsched,
+ self._storagewrapper.get_amount_left, upmeasure.get_total,
+ downmeasure.get_total, self.reported_port, myid,
+ self.infohash, self._error, self.finflag, upmeasure.get_rate,
+ downmeasure.get_rate, self._encoder.ever_got_incoming,
+ self.internal_shutdown, self._announce_done, self._dht)
+ else:
+ self._rerequest = Rerequester(metainfo.announce, config,
+ schedfunc, self._encoder.how_many_connections,
+ self._encoder.start_connection, externalsched,
+ self._storagewrapper.get_amount_left, upmeasure.get_total,
+ downmeasure.get_total, self.reported_port, myid,
+ self.infohash, self._error, self.finflag, upmeasure.get_rate,
+ downmeasure.get_rate, self._encoder.ever_got_incoming,
+ self.internal_shutdown, self._announce_done)
+
+ self._statuscollecter = DownloaderFeedback(choker, upmeasure.get_rate,
+ upmeasure_seedtime.get_rate, downmeasure.get_rate,
+ upmeasure.get_total, downmeasure.get_total,
+ self._ratemeasure.get_time_left, self._ratemeasure.get_size_left,
+ self.total_bytes, self.finflag, downloader, self._myfiles,
+ self._encoder.ever_got_incoming, self._rerequest)
+
+ self._announced = True
+ if self._dht and len(self._dht.table.findNodes(self.infohash)) == 0:
+ self._rawserver.add_task(self._dht.findCloseNodes, 5)
+ self._rawserver.add_task(self._rerequest.begin, 20)
+ else:
+ self._rerequest.begin()
+ self.started = True
+ if not self.finflag.isSet():
+ self._activity = (_("downloading"), 0)
+ self.feedback.started(self)
+
+ def got_exception(self, e):
+ is_external = False
+ if isinstance(e, BTShutdown):
+ self._error(ERROR, str(e))
+ is_external = True
+ elif isinstance(e, BTFailure):
+ self._error(CRITICAL, str(e))
+ self._activity = ( _("download failed: ") + str(e), 0)
+ elif isinstance(e, IOError):
+ msg = 'IO Error ' + str(e)
+ if e.errno == errno.ENOSPC:
+ msg = _("IO Error: No space left on disk, "
+ "or cannot create a file that large:") + str(e)
+ self._error(CRITICAL, msg)
+ self._activity = (_("killed by IO error: ") + str(e), 0)
+ elif isinstance(e, OSError):
+ self._error(CRITICAL, 'OS Error ' + str(e))
+ self._activity = (_("killed by OS error: ") + str(e), 0)
+ else:
+ data = StringIO()
+ print_exc(file=data)
+ self._error(CRITICAL, data.getvalue(), True)
+ self._activity = (_("killed by internal exception: ") + str(e), 0)
+ try:
+ self._close()
+ except Exception, e:
+ self._error(ERROR,
+ _("Additional error when closing down due to error: ") +
+ str(e))
+ if is_external:
+ self.feedback.failed(self, True)
+ return
+ if self.config['data_dir'] and self._storage is not None:
+ filename = os.path.join(self.config['data_dir'], 'resume',
+ self.infohash.encode('hex'))
+ if os.path.exists(filename):
+ try:
+ os.remove(filename)
+ except Exception, e:
+ self._error(WARNING,
+ _("Could not remove fastresume file after "
+ "failure:")
+ + str(e))
+ self.feedback.failed(self, False)
+
+ def _finished(self):
+ self.finflag.set()
+ # Call self._storage.close() to flush buffers and change files to
+ # read-only mode (when they're possibly reopened). Let exceptions
+ # from self._storage.close() kill the torrent since files might not
+ # be correct on disk if file.close() failed.
+ self._storage.close()
+ # If we haven't announced yet, normal first announce done later will
+ # tell the tracker about seed status.
+ self.is_seed = True
+ if self._announced:
+ self._rerequest.announce_finish()
+ self._activity = (_("seeding"), 1)
+ if self.config['check_hashes']:
+ self._save_fastresume(True)
+ self.feedback.finished(self)
+
+ def _save_fastresume(self, on_finish=False):
+ if not on_finish and (self.finflag.isSet() or not self.started):
+ return
+ if not self.config['data_dir']:
+ return
+ if on_finish: # self._ratemeasure might not exist yet
+ amount_done = self.total_bytes
+ else:
+ amount_done = self.total_bytes - self._ratemeasure.get_size_left()
+ filename = os.path.join(self.config['data_dir'], 'resume',
+ self.infohash.encode('hex'))
+ resumefile = None
+ try:
+ resumefile = file(filename, 'wb')
+ self._storage.write_fastresume(resumefile, amount_done)
+ self._storagewrapper.write_fastresume(resumefile)
+ resumefile.close()
+ except Exception, e:
+ self._error(WARNING, _("Could not write fastresume data: ") + str(e))
+ if resumefile is not None:
+ resumefile.close()
+
+ def shutdown(self):
+ if self.closed:
+ return True
+ try:
+ self._close()
+ self._save_fastresume()
+ self._activity = (_("shut down"), 0)
+ return True
+ except Exception, e:
+ self.got_exception(e)
+ return False
+ except:
+ data = StringIO()
+ print_exc(file=data)
+ self._error(WARNING, 'Unable to shutdown:\n'+data.getvalue())
+ return False
+
+ def internal_shutdown(self, level, text):
+ # This is only called when announce fails with no peers,
+ # don't try to announce again telling we're leaving the torrent
+ self._announced = False
+ self._error(level, text)
+ self.shutdown()
+ self.feedback.failed(self, True)
+
+ def _close(self):
+ if self.closed:
+ return
+ self.closed = True
+ self._rawserver.remove_context(self)
+ self._doneflag.set()
+ if self._announced:
+ self._rerequest.announce_stop()
+ self._rerequest.cleanup()
+ if self._hashcheck_thread is not None:
+ self._hashcheck_thread.join() # should die soon after doneflag set
+ if self._myfiles is not None:
+ self._filepool.remove_files(self._myfiles)
+ if self._listening:
+ self._singleport_listener.remove_torrent(self.infohash)
+ for port in self.reserved_ports:
+ self._singleport_listener.release_port(port, self.change_port)
+ if self._encoder is not None:
+ self._encoder.close_connections()
+ if self._storage is not None:
+ self._storage.close()
+ self._ratelimiter.clean_closed()
+ self._rawserver.add_task(gc.collect, 0)
+
+ def get_status(self, spew = False, fileinfo=False):
+ if self.started and not self.closed:
+ r = self._statuscollecter.get_statistics(spew, fileinfo)
+ r['activity'] = self._activity[0]
+ else:
+ r = dict(zip(('activity', 'fractionDone'), self._activity))
+ return r
+
+ def get_total_transfer(self):
+ if self._upmeasure is None:
+ return (0, 0)
+ return (self._upmeasure.get_total(), self._downmeasure.get_total())
+
+ def set_option(self, option, value):
+ if self.closed:
+ return
+ if self.config.has_key(option) and self.config[option] == value:
+ return
+ self.config[option] = value
+ if option == 'max_upload_rate':
+ # make sure counters get reset so new rate applies immediately
+ self.rlgroup.set_rate(value)
+
+ def change_port(self, new_port = None):
+ if not self._listening:
+ return
+ r = self.config['forwarded_port']
+ if r:
+ for port in self.reserved_ports:
+ self._singleport_listener.release_port(port)
+ del self.reserved_ports[:]
+ if self.reported_port == r:
+ return
+ elif new_port is not None:
+ r = new_port
+ self.reserved_ports.remove(self.reported_port)
+ self.reserved_ports.append(r)
+ elif self._singleport_listener.port != self.reported_port:
+ r = self._singleport_listener.get_port(self.change_port)
+ self.reserved_ports.append(r)
+ else:
+ return
+ self.reported_port = r
+ myid = self._make_id()
+ self._encoder.my_id = myid
+ self._rerequest.change_port(myid, r)
+
+ def _announce_done(self):
+ for port in self.reserved_ports[:-1]:
+ self._singleport_listener.release_port(port, self.change_port)
+ del self.reserved_ports[:-1]
+
+ def _make_id(self):
+ return PeerID.make_id()
+
+ def _error(self, level, text, exception=False):
+ self.errors.append((time(), level, text))
+ if exception:
+ self.feedback.exception(self, text)
+ else:
+ self.feedback.error(self, level, text)
diff --git a/BitTorrent/language.py b/BitTorrent/language.py
new file mode 100644
index 0000000..f7f72ef
--- /dev/null
+++ b/BitTorrent/language.py
@@ -0,0 +1,202 @@
+# -*- coding: UTF-8 -*-
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# http://people.w3.org/rishida/names/languages.html
+
+language_names = {
+ 'af' :u'Afrikaans' , 'bg' :u'Български' ,
+ 'da' :u'Dansk' , 'ca' :u'Català' ,
+ 'cs' :u'Čeština' , 'de' :u'Deutsch' ,
+ 'en' :u'English' , 'es' :u'Español' ,
+ 'es_MX':u'Español de Mexico ' , 'fr' :u'Français' ,
+ 'el' :u'Ελληνικά' , 'he' :u'עברית' ,
+ 'hu' :u'Magyar' , 'it' :u'Italiano' ,
+ 'is' :u'Íslenska' , 'ja' :u'日本語' ,
+ 'ko' :u'한국어' ,'nl' :u'Nederlands' ,
+ 'nb_NO':u'Norsk bokmål' , 'pl' :u'Polski' ,
+ 'pt' :u'Português' , 'pt_BR':u'Português do Brasil' ,
+ 'ro' :u'Română' , 'ru' :u'Русский' ,
+ 'sk' :u'Slovenský' , 'sl' :u'Slovensko' ,
+ 'sv' :u'Svenska' , 'tr' :u'Türkçe' ,
+ 'vi' :u'Tiê?ng Viê?t' ,
+ 'zh_CN':u'简体中文' , # Simplified
+ 'zh_TW':u'繁體中文' , # Traditional
+ }
+
+unfinished_language_names = {
+ 'ar' :u'العربية' , 'bs' :u'Bosanski' ,
+ 'eo' :u'Esperanto' , 'eu' :u'Euskara' ,
+ 'et' :u'Eesti' , 'fi' :u'Suomi' ,
+ 'fa' :u'فارسی' , 'ga' :u'Gaeilge' ,
+ 'gl' :u'Galego' , 'hr' :u'Hrvatski' ,
+ 'hy' :u'Հայերեն' , 'in' :u'Bahasa indonesia' ,
+ 'ka' :u'ქართული ენა', 'lt' :u'Lietuvių' ,
+ 'ms' :u'Bahasa melayu' , 'ml' :u'Malayalam' ,
+ 'sq' :u'Shqipe' , 'th' :u'ภาษาไทย' ,
+ 'tlh' :u'tlhIngan-Hol' , 'uk' :u'Українська' ,
+ 'hi' :u'हिंदी' , 'cy' :u'Cymraeg' ,
+ 'nn_NO':u'Norsk Nynorsk' , 'te' :u' తెలుగు' ,
+ }
+
+#language_names.update(unfinished_language_names)
+languages = language_names.keys()
+languages.sort()
+
+# windows codepage to locale mapping
+locale_sucks = {
+ 0x0436: "af", # Afrikaans
+ 0x3801: "ar_ae", # Arabic - United Arab Emirates
+ 0x3C01: "ar_bh", # Arabic - Bahrain
+ 0x1401: "ar_dz", # Arabic - Algeria
+ 0x0C01: "ar_eg", # Arabic - Egypt
+ 0x0801: "ar_iq", # Arabic - Iraq
+ 0x2C01: "ar_jo", # Arabic - Jordan
+ 0x3401: "ar_kw", # Arabic - Kuwait
+ 0x3001: "ar_lb", # Arabic - Lebanon
+ 0x1001: "ar_ly", # Arabic - Libya
+ 0x1801: "ar_ma", # Arabic - Morocco
+ 0x2001: "ar_om", # Arabic - Oman
+ 0x4001: "ar_qa", # Arabic - Qatar
+ 0x0401: "ar_sa", # Arabic - Saudi Arabia
+ 0x2801: "ar_sy", # Arabic - Syria
+ 0x1C01: "ar_tn", # Arabic - Tunisia
+ 0x2401: "ar_ye", # Arabic - Yemen
+ 0x082C: "az_az", # Azeri - Cyrillic
+ 0x0423: "be", # Belarusian
+ 0x0402: "bg", # Bulgarian
+ 0x0403: "ca", # Catalan
+ 0x0405: "cs", # Czech
+ 0x0406: "da", # Danish
+ 0x0007: "de", # German
+ 0x0C07: "de_at", # German - Austria
+ 0x0807: "de_ch", # German - Switzerland
+ 0x0407: "de_de", # German - Germany
+ 0x1407: "de_li", # German - Liechtenstein
+ 0x1007: "de_lu", # German - Luxembourg
+ 0x0408: "el", # Greek
+ 0x0C09: "en_au", # English - Australia
+ 0x2809: "en_bz", # English - Belize
+ 0x1009: "en_ca", # English - Canada
+ 0x2409: "en_cb", # English - Carribbean
+ 0x0809: "en_gb", # English - United Kingdom
+ 0x1809: "en_ie", # English - Ireland
+ 0x2009: "en_jm", # English - Jamaica
+ 0x1409: "en_nz", # English - New Zealand
+ 0x3409: "en_ph", # English - Phillippines
+ 0x2C09: "en_tt", # English - Trinidad
+ 0x0409: "en_us", # English - United States
+ 0x1C09: "en_za", # English - South Africa
+ 0x000A: "es", # Spanish (added)
+ 0x2C0A: "es_ar", # Spanish - Argentina
+ 0x400A: "es_bo", # Spanish - Bolivia
+ 0x340A: "es_cl", # Spanish - Chile
+ 0x240A: "es_co", # Spanish - Colombia
+ 0x140A: "es_cr", # Spanish - Costa Rica
+ 0x1C0A: "es_do", # Spanish - Dominican Republic
+ 0x300A: "es_ec", # Spanish - Ecuador
+ 0x040a: "es_es", # Spanish - Spain
+ 0x100A: "es_gt", # Spanish - Guatemala
+ 0x480A: "es_hn", # Spanish - Honduras
+ 0x080A: "es_mx", # Spanish - Mexico
+ 0x4C0A: "es_ni", # Spanish - Nicaragua
+ 0x180A: "es_pa", # Spanish - Panama
+ 0x280A: "es_pe", # Spanish - Peru
+ 0x500A: "es_pr", # Spanish - Puerto Rico
+ 0x3C0A: "es_py", # Spanish - Paraguay
+ 0x440A: "es_sv", # Spanish - El Salvador
+ 0x380A: "es_uy", # Spanish - Uruguay
+ 0x200A: "es_ve", # Spanish - Venezuela
+ 0x0425: "et", # Estonian
+ 0x0009: "en", # English (added)
+ 0x042D: "eu", # Basque
+ 0x0429: "fa", # Farsi
+ 0x040B: "fi", # Finnish
+ 0x0438: "fo", # Faroese
+ 0x000C: "fr", # French (added)
+ 0x080C: "fr_be", # French - Belgium
+ 0x0C0C: "fr_ca", # French - Canada
+ 0x100C: "fr_ch", # French - Switzerland
+ 0x040C: "fr_fr", # French - France
+ 0x140C: "fr_lu", # French - Luxembourg
+ 0x043C: "gd", # Gaelic - Scotland
+ 0x083C: "gd_ie", # Gaelic - Ireland
+ 0x040D: "he", # Hebrew
+ 0x0439: "hi", # Hindi
+ 0x041A: "hr", # Croatian
+ 0x040E: "hu", # Hungarian
+ 0x042B: "hy", # Armenian
+ 0x0421: "id", # Indonesian
+ 0x040F: "is", # Icelandic
+ 0x0010: "it", # Italian (added)
+ 0x0810: "it_ch", # Italian - Switzerland
+ 0x0410: "it_it", # Italian - Italy
+ 0x0411: "ja", # Japanese
+ 0x0412: "ko", # Korean
+ 0x0427: "lt", # Lithuanian
+ 0x0426: "lv", # Latvian
+ 0x042F: "mk", # FYRO Macedonian
+ 0x044E: "mr", # Marathi
+ 0x083E: "ms_bn", # Malay - Brunei
+ 0x043E: "ms_my", # Malay - Malaysia
+ 0x043A: "mt", # Maltese
+ 0x0013: "nl", # Dutch (added)
+ 0x0813: "nl_be", # Dutch - Belgium
+ 0x0413: "nl_nl", # Dutch - The Netherlands
+ 0x0814: "no_no", # Norwegian - Nynorsk
+ 0x0414: "nb_no", # Norwegian - Bokmal (?)
+ 0x0415: "pl", # Polish
+ 0x0016: "pt", # Portuguese (added)
+ 0x0416: "pt_br", # Portuguese - Brazil
+ 0x0816: "pt_pt", # Portuguese - Portugal
+ 0x0417: "rm", # Raeto-Romance
+ 0x0418: "ro", # Romanian - Romania
+ 0x0818: "ro_mo", # Romanian - Moldova
+ 0x0419: "ru", # Russian
+ 0x0819: "ru_mo", # Russian - Moldova
+ 0x044F: "sa", # Sanskrit
+ 0x042E: "sb", # Sorbian
+ 0x041B: "sk", # Slovak
+ 0x0424: "sl", # Slovenian
+ 0x041C: "sq", # Albanian
+ 0x081A: "sr_sp", # Serbian - Latin
+ 0x001D: "sv", # Swedish (added)
+ 0x081D: "sv_fi", # Swedish - Finland
+ 0x041D: "sv_se", # Swedish - Sweden
+ 0x0441: "sw", # Swahili
+ 0x0430: "sx", # Sutu
+ 0x0449: "ta", # Tamil
+ 0x041E: "th", # Thai
+ 0x0432: "tn", # Setsuana
+ 0x041F: "tr", # Turkish
+ 0x0431: "ts", # Tsonga
+ 0X0444: "tt", # Tatar
+ 0x0422: "uk", # Ukrainian
+ 0x0420: "ur", # Urdu
+ 0x0443: "uz_uz", # Uzbek - Latin
+ 0x042A: "vi", # Vietnamese
+ 0x0434: "xh", # Xhosa
+ 0x043D: "yi", # Yiddish
+ 0x0804: "zh_cn", # Chinese - China
+ 0x0C04: "zh_hk", # Chinese - Hong Kong S.A.R.
+ 0x1404: "zh_mo", # Chinese - Macau S.A.R
+ 0x1004: "zh_sg", # Chinese - Singapore
+ 0x0404: "zh_tw", # Chinese - Taiwan
+ 0x0435: "zu", # Zulu
+}
+
+if __name__ == '__main__':
+ from sets import Set
+ internal = Set([x.lower() for x in languages])
+ windows = Set(locale_sucks.values())
+ if not windows.issuperset(internal):
+ diff = list(internal.difference(windows))
+ diff.sort()
+ print diff
diff --git a/BitTorrent/launchmanycore.py b/BitTorrent/launchmanycore.py
new file mode 100644
index 0000000..e5cb35f
--- /dev/null
+++ b/BitTorrent/launchmanycore.py
@@ -0,0 +1,263 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Original version written by John Hoffman, heavily modified for different
+# multitorrent architecture by Uoti Urpala (over 40% shorter than original)
+
+import os
+from cStringIO import StringIO
+from traceback import print_exc
+
+from BitTorrent import configfile
+from BitTorrent.parsedir import parsedir
+from BitTorrent.download import Multitorrent, Feedback
+from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
+from BitTorrent import BTFailure
+
+from threading import Event
+from time import time
+
+
+class LaunchMany(Feedback):
+
+ def __init__(self, config, output, configfile_key):
+ try:
+ self.config = config
+ self.output = output
+ self.configfile_key = configfile_key
+
+ self.torrent_dir = config['torrent_dir']
+ self.torrent_cache = {}
+ self.file_cache = {}
+ self.blocked_files = {}
+
+ self.torrent_list = []
+ self.downloads = {}
+ self.doneflag = Event()
+
+ self.hashcheck_queue = []
+ self.hashcheck_store = {}
+ self.hashcheck_current = None
+
+ self.multitorrent = Multitorrent(config, self.doneflag,
+ self.global_error)
+ self.rawserver = self.multitorrent.rawserver
+
+ self.rawserver.add_task(self.scan, 0)
+ self.rawserver.add_task(self.stats, 0)
+
+ try:
+ import signal
+ def handler(signum, frame):
+ self.rawserver.external_add_task(self.read_config, 0)
+ signal.signal(signal.SIGHUP, handler)
+ self.rawserver.install_sigint_handler()
+ except Exception, e:
+ self.output.message(_("Could not set signal handler: ") + str(e))
+
+ self.rawserver.listen_forever()
+
+ self.output.message(_("shutting down"))
+ for infohash in self.torrent_list:
+ self.output.message(_('dropped "%s"') %
+ self.torrent_cache[infohash]['path'])
+ torrent = self.downloads[infohash]
+ if torrent is not None:
+ torrent.shutdown()
+ except:
+ data = StringIO()
+ print_exc(file = data)
+ output.exception(data.getvalue())
+
+ def scan(self):
+ self.rawserver.add_task(self.scan, self.config['parse_dir_interval'])
+
+ r = parsedir(self.torrent_dir, self.torrent_cache,
+ self.file_cache, self.blocked_files,
+ self.output.message)
+
+ ( self.torrent_cache, self.file_cache, self.blocked_files,
+ added, removed ) = r
+
+ for infohash, data in removed.items():
+ self.output.message(_('dropped "%s"') % data['path'])
+ self.remove(infohash)
+ for infohash, data in added.items():
+ self.output.message(_('added "%s"' ) % data['path'])
+ if self.config['launch_delay'] > 0:
+ self.rawserver.add_task(self.add, self.config['launch_delay'], (infohash, data))
+ else:
+ self.add(infohash, data)
+
+ def stats(self):
+ self.rawserver.add_task(self.stats, self.config['display_interval'])
+ data = []
+ for infohash in self.torrent_list:
+ cache = self.torrent_cache[infohash]
+ if self.config['display_path']:
+ name = cache['path']
+ else:
+ name = cache['name']
+ size = cache['length']
+ d = self.downloads[infohash]
+ progress = '0.0%'
+ peers = 0
+ seeds = 0
+ seedsmsg = "S"
+ dist = 0.0
+ uprate = 0.0
+ dnrate = 0.0
+ upamt = 0
+ dnamt = 0
+ t = 0
+ msg = ''
+ if d is None:
+ status = _("waiting for hash check")
+ else:
+ stats = d.get_status()
+ status = stats['activity']
+ progress = '%.1f%%' % (int(stats['fractionDone']*1000)/10.0)
+ if d.started and not d.closed:
+ s = stats
+ dist = s['numCopies']
+ if d.is_seed:
+ seeds = 0 # s['numOldSeeds']
+ seedsmsg = "s"
+ else:
+ if s['numSeeds'] + s['numPeers']:
+ t = stats['timeEst']
+ if t is None:
+ t = -1
+ if t == 0: # unlikely
+ t = 0.01
+ status = _("downloading")
+ else:
+ t = -1
+ status = _("connecting to peers")
+ seeds = s['numSeeds']
+ dnrate = stats['downRate']
+ peers = s['numPeers']
+ uprate = stats['upRate']
+ upamt = s['upTotal']
+ dnamt = s['downTotal']
+ if d.errors and (d.closed or d.errors[-1][0] + 300 > time()):
+ msg = d.errors[-1][2]
+
+ data.append(( name, status, progress, peers, seeds, seedsmsg, dist,
+ uprate, dnrate, upamt, dnamt, size, t, msg ))
+ stop = self.output.display(data)
+ if stop:
+ self.doneflag.set()
+
+ def remove(self, infohash):
+ self.torrent_list.remove(infohash)
+ if self.downloads[infohash] is not None:
+ self.downloads[infohash].shutdown()
+ self.was_stopped(infohash)
+ del self.downloads[infohash]
+
+ def add(self, infohash, data):
+ self.torrent_list.append(infohash)
+ self.downloads[infohash] = None
+ self.hashcheck_queue.append(infohash)
+ self.hashcheck_store[infohash] = data['metainfo']
+ self.check_hashcheck_queue()
+
+ def check_hashcheck_queue(self):
+ if self.hashcheck_current is not None or not self.hashcheck_queue:
+ return
+ self.hashcheck_current = self.hashcheck_queue.pop(0)
+ metainfo = self.hashcheck_store[self.hashcheck_current]
+ del self.hashcheck_store[self.hashcheck_current]
+ filename = self.determine_filename(self.hashcheck_current)
+ self.downloads[self.hashcheck_current] = self.multitorrent. \
+ start_torrent(ConvertedMetainfo(metainfo),
+ self.config, self, filename)
+
+ def determine_filename(self, infohash):
+ x = self.torrent_cache[infohash]
+ name = x['name']
+ savein = self.config['save_in']
+ isdir = not x['metainfo']['info'].has_key('length')
+ style = self.config['saveas_style']
+ if style == 4:
+ torrentname = os.path.split(x['path'][:-8])[1]
+ suggestedname = name
+ if torrentname == suggestedname:
+ style = 1
+ else:
+ style = 3
+
+ if style == 1 or style == 3:
+ if savein:
+ saveas = os.path.join(savein,x['file'][:-8]) # strip '.torrent'
+ else:
+ saveas = x['path'][:-8] # strip '.torrent'
+ if style == 3 and not isdir:
+ saveas = os.path.join(saveas, name)
+ else:
+ if savein:
+ saveas = os.path.join(savein, name)
+ else:
+ saveas = os.path.join(os.path.split(x['path'])[0], name)
+ return saveas
+
+ def was_stopped(self, infohash):
+ try:
+ self.hashcheck_queue.remove(infohash)
+ except:
+ pass
+ else:
+ del self.hashcheck_store[infohash]
+ if self.hashcheck_current == infohash:
+ self.hashcheck_current = None
+ self.check_hashcheck_queue()
+
+ def global_error(self, level, text):
+ self.output.message(text)
+
+ def exchandler(self, s):
+ self.output.exception(s)
+
+ def read_config(self):
+ try:
+ newvalues = configfile.get_config(self.config, self.configfile_key)
+ except Exception, e:
+ self.output.message(_("Error reading config: ") + str(e))
+ return
+ self.output.message(_("Rereading config file"))
+ self.config.update(newvalues)
+ # The set_option call can potentially trigger something that kills
+ # the torrent (when writing this the only possibility is a change in
+ # max_files_open causing an IOError while closing files), and so
+ # the self.failed() callback can run during this loop.
+ for option, value in newvalues.iteritems():
+ self.multitorrent.set_option(option, value)
+ for torrent in self.downloads.values():
+ if torrent is not None:
+ for option, value in newvalues.iteritems():
+ torrent.set_option(option, value)
+
+ # rest are callbacks from torrent instances
+
+ def started(self, torrent):
+ self.hashcheck_current = None
+ self.check_hashcheck_queue()
+
+ def failed(self, torrent, is_external):
+ infohash = torrent.infohash
+ self.was_stopped(infohash)
+ if self.torrent_cache.has_key(infohash):
+ self.output.message('DIED: "'+self.torrent_cache[infohash]['path']+'"')
+
+ def exception(self, torrent, text):
+ self.exchandler(text)
diff --git a/BitTorrent/makemetafile.py b/BitTorrent/makemetafile.py
new file mode 100644
index 0000000..35aee66
--- /dev/null
+++ b/BitTorrent/makemetafile.py
@@ -0,0 +1,263 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from __future__ import division
+
+import os
+import sys
+from sha import sha
+from time import time
+from threading import Event
+
+from BitTorrent.bencode import bencode, bdecode
+from BitTorrent.btformats import check_info
+from BitTorrent.parseargs import parseargs, printHelp
+from BitTorrent.obsoletepythonsupport import *
+from BitTorrent import BTFailure
+
+from khashmir.node import Node
+from khashmir.ktable import KTable
+from khashmir.util import packPeers, compact_peer_info
+
+ignore = ['core', 'CVS', 'Thumbs.db', 'desktop.ini']
+
+noncharacter_translate = {}
+for i in range(0xD800, 0xE000):
+ noncharacter_translate[i] = None
+for i in range(0xFDD0, 0xFDF0):
+ noncharacter_translate[i] = None
+for i in (0xFFFE, 0xFFFF):
+ noncharacter_translate[i] = None
+
+del i
+
+def dummy(v):
+ pass
+
+def make_meta_files(url,
+ files,
+ flag=Event(),
+ progressfunc=dummy,
+ filefunc=dummy,
+ piece_len_pow2=None,
+ target=None,
+ comment=None,
+ filesystem_encoding=None,
+ use_tracker=True,
+ data_dir = None):
+ if len(files) > 1 and target:
+ raise BTFailure(_("You can't specify the name of the .torrent file "
+ "when generating multiple torrents at once"))
+
+ if not filesystem_encoding:
+ try:
+ getattr(sys, 'getfilesystemencoding')
+ except AttributeError:
+ pass
+ else:
+ filesystem_encoding = sys.getfilesystemencoding()
+ if not filesystem_encoding:
+ filesystem_encoding = 'ascii'
+ try:
+ 'a1'.decode(filesystem_encoding)
+ except:
+ raise BTFailure(_('Filesystem encoding "%s" is not supported in this version')
+ % filesystem_encoding)
+ files.sort()
+ ext = '.torrent'
+
+ togen = []
+ for f in files:
+ if not f.endswith(ext):
+ togen.append(f)
+
+ total = 0
+ for f in togen:
+ total += calcsize(f)
+
+ subtotal = [0]
+ def callback(x):
+ subtotal[0] += x
+ progressfunc(subtotal[0] / total)
+ for f in togen:
+ if flag.isSet():
+ break
+ t = os.path.split(f)
+ if t[1] == '':
+ f = t[0]
+ filefunc(f)
+ if use_tracker:
+ make_meta_file(f, url, flag=flag, progress=callback,
+ piece_len_exp=piece_len_pow2, target=target,
+ comment=comment, encoding=filesystem_encoding)
+ else:
+ make_meta_file_dht(f, url, flag=flag, progress=callback,
+ piece_len_exp=piece_len_pow2, target=target,
+ comment=comment, encoding=filesystem_encoding, data_dir=data_dir)
+
+
+def make_meta_file(path, url, piece_len_exp, flag=Event(), progress=dummy,
+ comment=None, target=None, encoding='ascii'):
+ data = {'announce': url.strip(),'creation date': int(time())}
+ piece_length = 2 ** piece_len_exp
+ a, b = os.path.split(path)
+ if not target:
+ if b == '':
+ f = a + '.torrent'
+ else:
+ f = os.path.join(a, b + '.torrent')
+ else:
+ f = target
+ info = makeinfo(path, piece_length, flag, progress, encoding)
+ if flag.isSet():
+ return
+ check_info(info)
+ h = file(f, 'wb')
+
+ data['info'] = info
+ if comment:
+ data['comment'] = comment
+ h.write(bencode(data))
+ h.close()
+
+def make_meta_file_dht(path, nodes, piece_len_exp, flag=Event(), progress=dummy,
+ comment=None, target=None, encoding='ascii', data_dir=None):
+ # if nodes is empty, then get them out of the routing table in data_dir
+ # else, expect nodes to be a string of comma seperated <ip>:<port> pairs
+ # this has a lot of duplicated code from make_meta_file
+ piece_length = 2 ** piece_len_exp
+ a, b = os.path.split(path)
+ if not target:
+ if b == '':
+ f = a + '.torrent'
+ else:
+ f = os.path.join(a, b + '.torrent')
+ else:
+ f = target
+ info = makeinfo(path, piece_length, flag, progress, encoding)
+ if flag.isSet():
+ return
+ check_info(info)
+ info_hash = sha(bencode(info)).digest()
+
+ if not nodes:
+ x = open(os.path.join(data_dir, 'routing_table'), 'rb')
+ d = bdecode(x.read())
+ x.close()
+ t = KTable(Node().initWithDict({'id':d['id'], 'host':'127.0.0.1','port': 0}))
+ for n in d['rt']:
+ t.insertNode(Node().initWithDict(n))
+ nodes = [(node.host, node.port) for node in t.findNodes(info_hash) if node.host != '127.0.0.1']
+ else:
+ nodes = [(a[0], int(a[1])) for a in [node.strip().split(":") for node in nodes.split(",")]]
+ data = {'nodes': nodes, 'creation date': int(time())}
+ h = file(f, 'wb')
+
+ data['info'] = info
+ if comment:
+ data['comment'] = comment
+ h.write(bencode(data))
+ h.close()
+
+
+def calcsize(path):
+ total = 0
+ for s in subfiles(os.path.abspath(path)):
+ total += os.path.getsize(s[1])
+ return total
+
+def makeinfo(path, piece_length, flag, progress, encoding):
+ def to_utf8(name):
+ try:
+ u = name.decode(encoding)
+ except Exception, e:
+ raise BTFailure(_('Could not convert file/directory name "%s" to '
+ 'utf-8 (%s). Either the assumed filesystem '
+ 'encoding "%s" is wrong or the filename contains '
+ 'illegal bytes.') % (name, str(e), encoding))
+ if u.translate(noncharacter_translate) != u:
+ raise BTFailure(_('File/directory name "%s" contains reserved '
+ 'unicode values that do not correspond to '
+ 'characters.') % name)
+ return u.encode('utf-8')
+ path = os.path.abspath(path)
+ if os.path.isdir(path):
+ subs = subfiles(path)
+ subs.sort()
+ pieces = []
+ sh = sha()
+ done = 0
+ fs = []
+ totalsize = 0.0
+ totalhashed = 0
+ for p, f in subs:
+ totalsize += os.path.getsize(f)
+
+ for p, f in subs:
+ pos = 0
+ size = os.path.getsize(f)
+ p2 = [to_utf8(name) for name in p]
+ fs.append({'length': size, 'path': p2})
+ h = file(f, 'rb')
+ while pos < size:
+ a = min(size - pos, piece_length - done)
+ sh.update(h.read(a))
+ if flag.isSet():
+ return
+ done += a
+ pos += a
+ totalhashed += a
+
+ if done == piece_length:
+ pieces.append(sh.digest())
+ done = 0
+ sh = sha()
+ progress(a)
+ h.close()
+ if done > 0:
+ pieces.append(sh.digest())
+ return {'pieces': ''.join(pieces),
+ 'piece length': piece_length, 'files': fs,
+ 'name': to_utf8(os.path.split(path)[1])}
+ else:
+ size = os.path.getsize(path)
+ pieces = []
+ p = 0
+ h = file(path, 'rb')
+ while p < size:
+ x = h.read(min(piece_length, size - p))
+ if flag.isSet():
+ return
+ pieces.append(sha(x).digest())
+ p += piece_length
+ if p > size:
+ p = size
+ progress(min(piece_length, size - p))
+ h.close()
+ return {'pieces': ''.join(pieces),
+ 'piece length': piece_length, 'length': size,
+ 'name': to_utf8(os.path.split(path)[1])}
+
+def subfiles(d):
+ r = []
+ stack = [([], d)]
+ while stack:
+ p, n = stack.pop()
+ if os.path.isdir(n):
+ for s in os.listdir(n):
+ if s not in ignore and not s.startswith('.'):
+ stack.append((p + [s], os.path.join(n, s)))
+ else:
+ r.append((p, n))
+ return r
diff --git a/BitTorrent/obsoletepythonsupport.py b/BitTorrent/obsoletepythonsupport.py
new file mode 100644
index 0000000..c119da1
--- /dev/null
+++ b/BitTorrent/obsoletepythonsupport.py
@@ -0,0 +1,42 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from __future__ import generators
+
+import sys
+
+if sys.version_info < (2, 3):
+ # Allow int() to create numbers larger than "small ints".
+ # This is NOT SAFE if int is used as the name of the type instead
+ # (as in "type(x) in (int, long)").
+ int = long
+
+ def enumerate(x):
+ i = 0
+ for y in x:
+ yield (i, y)
+ i += 1
+
+ def sum(seq):
+ r = 0
+ for x in seq:
+ r += x
+ return r
+
+del sys
+
+def import_curses():
+ import curses
+ if not hasattr(curses, 'use_default_colors'):
+ def use_default_colors():
+ return
+ curses.use_default_colors = use_default_colors
+ return curses
+
diff --git a/BitTorrent/parseargs.py b/BitTorrent/parseargs.py
new file mode 100644
index 0000000..2db0b9a
--- /dev/null
+++ b/BitTorrent/parseargs.py
@@ -0,0 +1,187 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bill Bumgarner and Bram Cohen
+
+from types import *
+from cStringIO import StringIO
+
+from BitTorrent.obsoletepythonsupport import *
+
+from BitTorrent.defaultargs import MyBool, MYTRUE
+from BitTorrent import BTFailure
+from BitTorrent.bencode import bdecode
+from BitTorrent.platform import is_frozen_exe
+from BitTorrent.RawServer_magic import switch_rawserver
+
+def makeHelp(uiname, defaults):
+ ret = ''
+ ret += (_("Usage: %s ") % uiname)
+ if uiname.startswith('launchmany'):
+ ret += _("[OPTIONS] [TORRENTDIRECTORY]\n\n")
+ ret += _("If a non-option argument is present it's taken as the value\n"
+ "of the torrent_dir option.\n")
+ elif uiname == 'bittorrent':
+ ret += _("[OPTIONS] [TORRENTFILES]\n")
+ elif uiname.startswith('bittorrent'):
+ ret += _("[OPTIONS] [TORRENTFILE]\n")
+ elif uiname.startswith('maketorrent'):
+ ret += _("[OPTION] TRACKER_URL FILE [FILE]\n")
+ ret += '\n'
+ ret += _("arguments are -\n") + formatDefinitions(defaults, 80)
+ return ret
+
+def printHelp(uiname, defaults):
+ if uiname in ('bittorrent','maketorrent') and is_frozen_exe:
+ from BitTorrent.GUI import HelpWindow
+ HelpWindow(None, makeHelp(uiname, defaults))
+ else:
+ print makeHelp(uiname, defaults)
+
+def formatDefinitions(options, COLS):
+ s = StringIO()
+ indent = " " * 10
+ width = COLS - 11
+
+ if width < 15:
+ width = COLS - 2
+ indent = " "
+
+ for option in options:
+ (longname, default, doc) = option
+ if doc == '':
+ continue
+ s.write('--' + longname)
+ is_boolean = type(default) is MyBool
+ if is_boolean:
+ s.write(', --no_' + longname)
+ else:
+ s.write(' <arg>')
+ s.write('\n')
+ if default is not None:
+ doc += _(" (defaults to ") + repr(default) + ')'
+ i = 0
+ for word in doc.split():
+ if i == 0:
+ s.write(indent + word)
+ i = len(word)
+ elif i + len(word) >= width:
+ s.write('\n' + indent + word)
+ i = len(word)
+ else:
+ s.write(' ' + word)
+ i += len(word) + 1
+ s.write('\n\n')
+ return s.getvalue()
+
+def usage(str):
+ raise BTFailure(str)
+
+def format_key(key):
+ if len(key) == 1:
+ return '-%s'%key
+ else:
+ return '--%s'%key
+
+def parseargs(argv, options, minargs=None, maxargs=None, presets=None):
+ config = {}
+ for option in options:
+ longname, default, doc = option
+ config[longname] = default
+ args = []
+ pos = 0
+ if presets is None:
+ presets = {}
+ else:
+ presets = presets.copy()
+ while pos < len(argv):
+ if argv[pos][:1] != '-': # not a cmdline option
+ args.append(argv[pos])
+ pos += 1
+ else:
+ key, value = None, None
+ if argv[pos].startswith('--'): # --aaa 1
+ if argv[pos].startswith('--no_'):
+ key = argv[pos][5:]
+ boolval = False
+ else:
+ key = argv[pos][2:]
+ boolval = True
+ if key not in config:
+ raise BTFailure(_("unknown key ") + format_key(key))
+ if type(config[key]) is MyBool: # boolean cmd line switch, no value
+ value = boolval
+ pos += 1
+ else: # --argument value
+ if pos == len(argv) - 1:
+ usage(_("parameter passed in at end with no value"))
+ key, value = argv[pos][2:], argv[pos+1]
+ pos += 2
+ elif argv[pos][:1] == '-':
+ key = argv[pos][1:2]
+ if len(argv[pos]) > 2: # -a1
+ value = argv[pos][2:]
+ pos += 1
+ else: # -a 1
+ if pos == len(argv) - 1:
+ usage(_("parameter passed in at end with no value"))
+ value = argv[pos+1]
+ pos += 2
+ else:
+ raise BTFailure(_("command line parsing failed at ")+argv[pos])
+
+ presets[key] = value
+ parse_options(config, presets)
+ config.update(presets)
+ for key, value in config.items():
+ if value is None:
+ usage(_("Option %s is required.") % format_key(key))
+ if minargs is not None and len(args) < minargs:
+ usage(_("Must supply at least %d arguments.") % minargs)
+ if maxargs is not None and len(args) > maxargs:
+ usage(_("Too many arguments - %d maximum.") % maxargs)
+
+ if config.has_key('twisted'):
+ if config['twisted'] == 0:
+ switch_rawserver('untwisted')
+ elif config['twisted'] == 1:
+ switch_rawserver('twisted')
+
+ return (config, args)
+
+def parse_options(defaults, newvalues):
+ for key, value in newvalues.iteritems():
+ if not defaults.has_key(key):
+ raise BTFailure(_("unknown key ") + format_key(key))
+ try:
+ t = type(defaults[key])
+ if t is MyBool:
+ if value in ('True', '1', MYTRUE, True):
+ value = True
+ else:
+ value = False
+ newvalues[key] = value
+ elif t in (StringType, NoneType):
+ newvalues[key] = value
+ elif t in (IntType, LongType):
+ if value == 'False':
+ newvalues[key] == 0
+ elif value == 'True':
+ newvalues[key] == 1
+ else:
+ newvalues[key] = int(value)
+ elif t is FloatType:
+ newvalues[key] = float(value)
+ else:
+ raise TypeError, str(t)
+
+ except ValueError, e:
+ raise BTFailure(_("wrong format of %s - %s") % (format_key(key), str(e)))
+
diff --git a/BitTorrent/parsedir.py b/BitTorrent/parsedir.py
new file mode 100644
index 0000000..3b86a03
--- /dev/null
+++ b/BitTorrent/parsedir.py
@@ -0,0 +1,150 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by John Hoffman and Uoti Urpala
+
+import os
+from sha import sha
+
+from BitTorrent.bencode import bencode, bdecode
+from BitTorrent.btformats import check_message
+
+NOISY = False
+
+def parsedir(directory, parsed, files, blocked, errfunc,
+ include_metainfo=True):
+ if NOISY:
+ errfunc('checking dir')
+ dirs_to_check = [directory]
+ new_files = {}
+ new_blocked = {}
+ while dirs_to_check: # first, recurse directories and gather torrents
+ directory = dirs_to_check.pop()
+ newtorrents = False
+ try:
+ dir_contents = os.listdir(directory)
+ except (IOError, OSError), e:
+ errfunc(_("Could not read directory ") + directory)
+ continue
+ for f in dir_contents:
+ if f.endswith('.torrent'):
+ newtorrents = True
+ p = os.path.join(directory, f)
+ try:
+ new_files[p] = [(os.path.getmtime(p),os.path.getsize(p)),0]
+ except (IOError, OSError), e:
+ errfunc(_("Could not stat ") + p + " : " + str(e))
+ if not newtorrents:
+ for f in dir_contents:
+ p = os.path.join(directory, f)
+ if os.path.isdir(p):
+ dirs_to_check.append(p)
+
+ new_parsed = {}
+ to_add = []
+ added = {}
+ removed = {}
+ # files[path] = [(modification_time, size), hash], hash is 0 if the file
+ # has not been successfully parsed
+ for p,v in new_files.items(): # re-add old items and check for changes
+ oldval = files.get(p)
+ if oldval is None: # new file
+ to_add.append(p)
+ continue
+ h = oldval[1]
+ if oldval[0] == v[0]: # file is unchanged from last parse
+ if h:
+ if p in blocked: # parseable + blocked means duplicate
+ to_add.append(p) # other duplicate may have gone away
+ else:
+ new_parsed[h] = parsed[h]
+ new_files[p] = oldval
+ else:
+ new_blocked[p] = None # same broken unparseable file
+ continue
+ if p not in blocked and h in parsed: # modified; remove+add
+ if NOISY:
+ errfunc(_("removing %s (will re-add)") % p)
+ removed[h] = parsed[h]
+ to_add.append(p)
+
+ to_add.sort()
+ for p in to_add: # then, parse new and changed torrents
+ new_file = new_files[p]
+ v = new_file[0]
+ if new_file[1] in new_parsed: # duplicate
+ if p not in blocked or files[p][0] != v:
+ errfunc(_("**warning** %s is a duplicate torrent for %s") %
+ (p, new_parsed[new_file[1]]['path']))
+ new_blocked[p] = None
+ continue
+
+ if NOISY:
+ errfunc('adding '+p)
+ try:
+ ff = open(p, 'rb')
+ d = bdecode(ff.read())
+ check_message(d)
+ h = sha(bencode(d['info'])).digest()
+ new_file[1] = h
+ if new_parsed.has_key(h):
+ errfunc(_("**warning** %s is a duplicate torrent for %s") %
+ (p, new_parsed[h]['path']))
+ new_blocked[p] = None
+ continue
+
+ a = {}
+ a['path'] = p
+ f = os.path.basename(p)
+ a['file'] = f
+ i = d['info']
+ l = 0
+ nf = 0
+ if i.has_key('length'):
+ l = i.get('length',0)
+ nf = 1
+ elif i.has_key('files'):
+ for li in i['files']:
+ nf += 1
+ if li.has_key('length'):
+ l += li['length']
+ a['numfiles'] = nf
+ a['length'] = l
+ a['name'] = i.get('name', f)
+ def setkey(k, d = d, a = a):
+ if d.has_key(k):
+ a[k] = d[k]
+ setkey('failure reason')
+ setkey('warning message')
+ setkey('announce-list')
+ if include_metainfo:
+ a['metainfo'] = d
+ except:
+ errfunc(_("**warning** %s has errors") % p)
+ new_blocked[p] = None
+ continue
+ try:
+ ff.close()
+ except:
+ pass
+ if NOISY:
+ errfunc(_("... successful"))
+ new_parsed[h] = a
+ added[h] = a
+
+ for p,v in files.iteritems(): # and finally, mark removed torrents
+ if p not in new_files and p not in blocked:
+ if NOISY:
+ errfunc(_("removing %s") % p)
+ removed[v[1]] = parsed[v[1]]
+
+ if NOISY:
+ errfunc(_("done checking"))
+ return (new_parsed, new_files, new_blocked, added, removed)
diff --git a/BitTorrent/platform.py b/BitTorrent/platform.py
new file mode 100644
index 0000000..dd8ca05
--- /dev/null
+++ b/BitTorrent/platform.py
@@ -0,0 +1,390 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Matt Chisholm and Uoti Urpala
+
+# This module is strictly for cross platform compatibility items and
+# should not import anything from other BitTorrent modules.
+
+import os
+import re
+import sys
+import time
+import gettext
+import locale
+if os.name == 'nt':
+ import _winreg
+ import win32api
+ from win32com.shell import shellcon, shell
+ import win32com.client
+ import ctypes
+elif os.name == 'posix' and os.uname()[0] == 'Darwin':
+ has_pyobjc = False
+ try:
+ from Foundation import NSBundle
+ has_pyobjc = True
+ except ImportError:
+ pass
+
+from BitTorrent import app_name, version
+from BitTorrent.language import locale_sucks
+
+if sys.platform.startswith('win'):
+ bttime = time.clock
+else:
+ bttime = time.time
+
+is_frozen_exe = (os.name == 'nt') and hasattr(sys, 'frozen') and (sys.frozen == 'windows_exe')
+
+os_name = os.name
+os_version = None
+if os_name == 'nt':
+
+ class OSVERSIONINFOEX(ctypes.Structure):
+ _fields_ = [("dwOSVersionInfoSize", ctypes.c_ulong),
+ ("dwMajorVersion", ctypes.c_ulong),
+ ("dwMinorVersion", ctypes.c_ulong),
+ ("dwBuildNumber", ctypes.c_ulong),
+ ("dwPlatformId", ctypes.c_ulong),
+ ("szCSDVersion", ctypes.c_char * 128),
+ ("wServicePackMajor", ctypes.c_ushort),
+ ("wServicePackMinor", ctypes.c_ushort),
+ ("wSuiteMask", ctypes.c_ushort),
+ ("wProductType", ctypes.c_byte),
+ ("wReserved", ctypes.c_byte),
+ ]
+
+ o = OSVERSIONINFOEX()
+ o.dwOSVersionInfoSize = 156 # sizeof(OSVERSIONINFOEX)
+
+ ctypes.windll.kernel32.GetVersionExA(ctypes.byref(o))
+
+ wh = {(1, 4, 0): "95",
+ (1, 4, 10): "98",
+ (1, 4, 90): "ME",
+ (2, 4, 0): "NT",
+ (2, 5, 0): "2000",
+ (2, 5, 1): "XP" ,
+ (2, 5, 2): "2003",
+ }
+
+ win_version_num = (o.dwPlatformId, o.dwMajorVersion, o.dwMinorVersion,
+ o.wServicePackMajor, o.wServicePackMinor, o.dwBuildNumber)
+
+ wk = (o.dwPlatformId, o.dwMajorVersion, o.dwMinorVersion)
+ if wh.has_key(wk):
+ os_version = wh[wk]
+ else:
+ os_version = wh[max(wh.keys())]
+ sys.stderr.write("Couldn't identify windows version: %s, "
+ "assuming '%s'\n" % (str(wk), os_version))
+ del wh, wk
+
+elif os_name == 'posix':
+ os_version = os.uname()[0]
+
+
+def calc_unix_dirs():
+ appdir = '%s-%s'%(app_name, version)
+ ip = os.path.join('share', 'pixmaps', appdir)
+ dp = os.path.join('share', 'doc' , appdir)
+ lp = os.path.join('share', 'locale')
+ return ip, dp, lp
+
+if is_frozen_exe:
+ app_root = os.path.split(os.path.abspath(win32api.GetModuleFileName(0)))[0]
+else:
+ app_root = os.path.split(os.path.abspath(sys.argv[0]))[0]
+doc_root = app_root
+osx = False
+if os.name == 'posix':
+ if os.uname()[0] == "Darwin":
+ doc_root = app_root = app_root.encode('utf8')
+ if has_pyobjc:
+ doc_root = NSBundle.mainBundle().resourcePath()
+ osx = True
+image_root = os.path.join(app_root, 'images')
+locale_root = os.path.join(app_root, 'locale')
+
+if not os.access(image_root, os.F_OK) or not os.access(locale_root, os.F_OK):
+ # we guess that probably we are installed on *nix in this case
+ # (I have no idea whether this is right or not -- matt)
+ if app_root[-4:] == '/bin':
+ # yep, installed on *nix
+ installed_prefix = app_root[:-4]
+ image_root, doc_root, locale_root = map(
+ lambda p: os.path.join(installed_prefix, p), calc_unix_dirs()
+ )
+
+# a cross-platform way to get user's config directory
+def get_config_dir():
+ shellvars = ['${APPDATA}', '${HOME}', '${USERPROFILE}']
+ dir_root = get_dir_root(shellvars)
+
+ if (dir_root is None) and (os.name == 'nt'):
+ app_dir = get_shell_dir(shellcon.CSIDL_APPDATA)
+ if app_dir is not None:
+ dir_root = app_dir
+
+ if dir_root is None and os.name == 'nt':
+ tmp_dir_root = os.path.split(sys.executable)[0]
+ if os.access(tmp_dir_root, os.R_OK|os.W_OK):
+ dir_root = tmp_dir_root
+
+ return dir_root
+
+def get_cache_dir():
+ dir = None
+ if os.name == 'nt':
+ dir = get_shell_dir(shellcon.CSIDL_INTERNET_CACHE)
+ return dir
+
+def get_home_dir():
+ shellvars = ['${HOME}', '${USERPROFILE}']
+ dir_root = get_dir_root(shellvars)
+
+ if (dir_root is None) and (os.name == 'nt'):
+ dir = get_shell_dir(shellcon.CSIDL_PROFILE)
+ if dir is None:
+ # there's no clear best fallback here
+ # MS discourages you from writing directly in the home dir,
+ # and sometimes (i.e. win98) there isn't one
+ dir = get_shell_dir(shellcon.CSIDL_DESKTOPDIRECTORY)
+
+ dir_root = dir
+
+ return dir_root
+
+def get_temp_dir():
+ shellvars = ['${TMP}', '${TEMP}']
+ dir_root = get_dir_root(shellvars, default_to_home=False)
+
+ #this method is preferred to the envvars
+ if os.name == 'nt':
+ try_dir_root = win32api.GetTempPath()
+ if try_dir_root is not None:
+ dir_root = try_dir_root
+
+ if dir_root is None:
+ try_dir_root = None
+ if os.name == 'nt':
+ # this should basically never happen. GetTempPath always returns something
+ try_dir_root = r'C:\WINDOWS\Temp'
+ elif os.name == 'posix':
+ try_dir_root = '/tmp'
+ if (try_dir_root is not None and
+ os.path.isdir(try_dir_root) and
+ os.access(try_dir_root, os.R_OK|os.W_OK)):
+ dir_root = try_dir_root
+ return dir_root
+
+def get_dir_root(shellvars, default_to_home=True):
+ def check_sysvars(x):
+ y = os.path.expandvars(x)
+ if y != x and os.path.isdir(y):
+ return y
+ return None
+
+ dir_root = None
+ for d in shellvars:
+ dir_root = check_sysvars(d)
+ if dir_root is not None:
+ break
+ else:
+ if default_to_home:
+ dir_root = os.path.expanduser('~')
+ if dir_root == '~' or not os.path.isdir(dir_root):
+ dir_root = None
+ return dir_root
+
+# this function is the preferred way to get windows' paths
+def get_shell_dir(value):
+ dir = None
+ if os.name == 'nt':
+ try:
+ dir = shell.SHGetFolderPath(0, value, 0, 0)
+ dir = dir.encode('mbcs')
+ except:
+ pass
+ return dir
+
+def get_startup_dir():
+ dir = None
+ if os.name == 'nt':
+ dir = get_shell_dir(shellcon.CSIDL_STARTUP)
+ return dir
+
+def create_shortcut(source, dest, *args):
+ if os.name == 'nt':
+ shell = win32com.client.Dispatch("WScript.Shell")
+ shortcut = shell.CreateShortCut(dest + ".lnk")
+ shortcut.Targetpath = source
+ shortcut.Arguments = ' '.join(args)
+ path, file = os.path.split(source)
+ shortcut.WorkingDirectory = path
+ shortcut.save()
+ else:
+ # some other os may not support this, but throwing an error is good since
+ # the function couldn't do what was requested
+ os.symlink(source, dest)
+ # linux also can't do args... maybe we should spit out a shell script?
+ assert not args;
+
+def remove_shortcut(dest):
+ if os.name == 'nt':
+ dest += ".lnk"
+ os.unlink(dest)
+
+def path_wrap(path):
+ return path
+
+if os.name == 'nt':
+ def path_wrap(path):
+ return path.decode('mbcs').encode('utf-8')
+
+def btspawn(torrentqueue, cmd, *args):
+ ext = ''
+ if is_frozen_exe:
+ ext = '.exe'
+ path = os.path.join(app_root, cmd+ext)
+ if not os.access(path, os.F_OK):
+ if os.access(path+'.py', os.F_OK):
+ path = path+'.py'
+ args = [path] + list(args) # $0
+ spawn(torrentqueue, *args)
+
+def spawn(torrentqueue, *args):
+ if os.name == 'nt':
+ # do proper argument quoting since exec/spawn on Windows doesn't
+ bargs = args
+ args = []
+ for a in bargs:
+ if not a.startswith("/"):
+ a.replace('"', '\"')
+ a = '"%s"' % a
+ args.append(a)
+
+ argstr = ' '.join(args[1:])
+ # use ShellExecute instead of spawn*() because we don't want
+ # handles (like the controlsocket) to be duplicated
+ win32api.ShellExecute(0, "open", args[0], argstr, None, 1) # 1 == SW_SHOW
+ else:
+ if os.access(args[0], os.X_OK):
+ forkback = os.fork()
+ if forkback == 0:
+ if torrentqueue is not None:
+ #BUG: should we do this?
+ #torrentqueue.set_done()
+ torrentqueue.wrapped.ipc.stop()
+ os.execl(args[0], *args)
+ else:
+ #BUG: what should we do here?
+ pass
+
+def _gettext_install(domain, localedir=None, languages=None, unicode=False):
+ # gettext on win32 does not use locale.getdefaultlocale() by default
+ # other os's will fall through and gettext.find() will do this task
+ if os_name == 'nt':
+ # this code is straight out of gettext.find()
+ if languages is None:
+ languages = []
+ for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'):
+ val = os.environ.get(envar)
+ if val:
+ languages = val.split(':')
+ break
+
+ # this is the important addition - since win32 does not typically
+ # have any enironment variable set, append the default locale before 'C'
+ languages.append(locale.getdefaultlocale()[0])
+
+ if 'C' not in languages:
+ languages.append('C')
+
+ # this code is straight out of gettext.install
+ t = gettext.translation(domain, localedir, languages=languages, fallback=True)
+ t.install(unicode)
+
+
+def language_path():
+ config_dir = get_config_dir()
+ lang_file_name = os.path.join(config_dir, '.bittorrent', 'data', 'language')
+ return lang_file_name
+
+
+def read_language_file():
+ lang = None
+
+ if os.name == 'nt':
+ # this pulls user-preference language from the installer location
+ try:
+ regko = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, "Software\\BitTorrent")
+ lang_num = _winreg.QueryValueEx(regko, "Language")[0]
+ lang_num = int(lang_num)
+ lang = locale_sucks[lang_num]
+ except:
+ pass
+ else:
+ lang_file_name = language_path()
+ if os.access(lang_file_name, os.F_OK|os.R_OK):
+ mode = 'r'
+ if sys.version_info >= (2, 3):
+ mode = 'U'
+ lang_file = open(lang_file_name, mode)
+ lang_line = lang_file.readline()
+ lang_file.close()
+ if lang_line:
+ lang = ''
+ for i in lang_line[:5]:
+ if not i.isalpha() and i != '_':
+ break
+ lang += i
+ if lang == '':
+ lang = None
+
+ return lang
+
+
+def write_language_file(lang):
+ if os.name == 'nt':
+ regko = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, "Software\\BitTorrent")
+ if lang == '':
+ _winreg.DeleteValue(regko, "Language")
+ else:
+ lcid = None
+
+ # I want two-way dicts
+ for id, code in locale_sucks.iteritems():
+ if code.lower() == lang.lower():
+ lcid = id
+ break
+ if not lcid:
+ raise KeyError(lang)
+
+ _winreg.SetValueEx(regko, "Language", 0, _winreg.REG_SZ, str(lcid))
+
+ else:
+ lang_file_name = language_path()
+ lang_file = open(lang_file_name, 'w')
+ lang_file.write(lang)
+ lang_file.close()
+
+
+def install_translation():
+ languages = None
+ try:
+ lang = read_language_file()
+ if lang is not None:
+ languages = [lang, ]
+ except:
+ #pass
+ from traceback import print_exc
+ print_exc()
+ _gettext_install('bittorrent', locale_root, languages=languages)
diff --git a/BitTorrent/prefs.py b/BitTorrent/prefs.py
new file mode 100644
index 0000000..37177c2
--- /dev/null
+++ b/BitTorrent/prefs.py
@@ -0,0 +1,89 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+
+class Preferences(object):
+ def __init__(self, parent=None):
+ self._parent = None
+ self._options = {}
+ if parent:
+ self._parent = parent
+
+ def initWithDict(self, dict):
+ self._options = dict
+ return self
+
+ def getDict(self):
+ return dict(self._options)
+
+ def getDifference(self):
+ if self._parent:
+ return dict([(x, y) for x, y in self._options.items() if y != self._parent.get(x, None)])
+ else:
+ return dict(self._options)
+
+ def __getitem__(self, option):
+ if self._options.has_key(option):
+ return self._options[option]
+ elif self._parent:
+ return self._parent[option]
+ return None
+
+ def __setitem__(self, option, value):
+ self._options.__setitem__(option, value)
+
+ def __len__(self):
+ l = len(self._options)
+ if self._parent:
+ return l + len(self._parent)
+ else:
+ return l
+
+ def __delitem__(self, option):
+ del(self._options[option])
+
+ def clear(self): self._options.clear()
+
+ def has_key(self, option):
+ if self._options.has_key(option):
+ return True
+ elif self._parent:
+ return self._parent.has_key(option)
+ return False
+
+ def keys(self):
+ l = self._options.keys()
+ if self._parent:
+ l += [key for key in self._parent.keys() if key not in l]
+ return l
+
+ def values(self):
+ l = self._options.values()
+ if self._parent:
+ l += [value for value in self._parent.values() if value not in l]
+ return l
+
+ def items(self):
+ l = self._options.items()
+ if self._parent:
+ l += [item for item in self._parent.items() if item not in l]
+ return l
+
+ def __iter__(self): return self.iterkeys()
+ def __str__(self): return 'Preferences({%s})' % str(self.items())
+ def iteritems(self): return self.items().__iter__()
+ def iterkeys(self): return self.keys().__iter__()
+ def itervalues(self): return self.values().__iter__()
+ def update(self, dict): return self._options.update(dict)
+
+ def get(self, key, failobj=None):
+ if not self.has_key(key):
+ return failobj
+ return self[key]
diff --git a/BitTorrent/selectpoll.py b/BitTorrent/selectpoll.py
new file mode 100644
index 0000000..d01f1ef
--- /dev/null
+++ b/BitTorrent/selectpoll.py
@@ -0,0 +1,68 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+from select import select, error
+from time import sleep
+from types import IntType
+from bisect import bisect
+POLLIN = 1
+POLLOUT = 2
+POLLERR = 8
+POLLHUP = 16
+
+
+class poll(object):
+
+ def __init__(self):
+ self.rlist = []
+ self.wlist = []
+
+ def register(self, f, t):
+ if type(f) != IntType:
+ f = f.fileno()
+ if (t & POLLIN) != 0:
+ insert(self.rlist, f)
+ else:
+ remove(self.rlist, f)
+ if (t & POLLOUT) != 0:
+ insert(self.wlist, f)
+ else:
+ remove(self.wlist, f)
+
+ def unregister(self, f):
+ if type(f) != IntType:
+ f = f.fileno()
+ remove(self.rlist, f)
+ remove(self.wlist, f)
+
+ def poll(self, timeout = None):
+ if self.rlist != [] or self.wlist != []:
+ r, w, e = select(self.rlist, self.wlist, [], timeout)
+ else:
+ sleep(timeout)
+ return []
+ result = []
+ for s in r:
+ result.append((s, POLLIN))
+ for s in w:
+ result.append((s, POLLOUT))
+ return result
+
+def remove(list, item):
+ i = bisect(list, item)
+ if i > 0 and list[i-1] == item:
+ del list[i-1]
+
+def insert(list, item):
+ i = bisect(list, item)
+ if i == 0 or list[i-1] != item:
+ list.insert(i, item)
diff --git a/BitTorrent/track.py b/BitTorrent/track.py
new file mode 100644
index 0000000..5333938
--- /dev/null
+++ b/BitTorrent/track.py
@@ -0,0 +1,877 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen and John Hoffman
+
+import sys
+import os
+import signal
+import re
+from threading import Event
+from urlparse import urlparse
+from traceback import print_exc
+from time import time, gmtime, strftime, localtime
+from random import shuffle
+from types import StringType, IntType, LongType, ListType, DictType
+from binascii import b2a_hex
+from cStringIO import StringIO
+
+from BitTorrent.obsoletepythonsupport import *
+
+from BitTorrent.parseargs import parseargs, formatDefinitions
+from BitTorrent.RawServer_magic import RawServer
+from BitTorrent.HTTPHandler import HTTPHandler, months, weekdays
+from BitTorrent.parsedir import parsedir
+from BitTorrent.NatCheck import NatCheck
+from BitTorrent.bencode import bencode, bdecode, Bencached
+from BitTorrent.zurllib import quote, unquote
+from BitTorrent import version
+
+
+defaults = [
+ ('port', 80,
+ _("Port to listen on.")),
+ ('dfile', None,
+ _("file to store recent downloader info in")),
+ ('bind', '',
+ _("ip to bind to locally")),
+ ('socket_timeout', 15,
+ _("timeout for closing connections")),
+ ('close_with_rst', 0,
+ _("close connections with RST and avoid the TCP TIME_WAIT state")),
+ ('save_dfile_interval', 5 * 60,
+ _("seconds between saving dfile")),
+ ('timeout_downloaders_interval', 45 * 60,
+ _("seconds between expiring downloaders")),
+ ('reannounce_interval', 30 * 60,
+ _("seconds downloaders should wait between reannouncements")),
+ ('response_size', 50,
+ _("default number of peers to send an info message to if the "
+ "client does not specify a number")),
+ ('timeout_check_interval', 5,
+ _("time to wait between checking if any connections have timed out")),
+ ('nat_check', 3,
+ _("how many times to check if a downloader is behind a NAT "
+ "(0 = don't check)")),
+ ('log_nat_checks', 0,
+ _("whether to add entries to the log for nat-check results")),
+ ('min_time_between_log_flushes', 3.0,
+ _("minimum time it must have been since the last flush to do "
+ "another one")),
+ ('min_time_between_cache_refreshes', 600.0,
+ _("minimum time in seconds before a cache is considered stale "
+ "and is flushed")),
+ ('allowed_dir', '',
+ _("only allow downloads for .torrents in this dir (and recursively in "
+ "subdirectories of directories that have no .torrent files "
+ "themselves). If set, torrents in this directory show up on "
+ "infopage/scrape whether they have peers or not")),
+ ('parse_dir_interval', 60,
+ _("how often to rescan the torrent directory, in seconds")),
+ ('allowed_controls', 0,
+ _("allow special keys in torrents in the allowed_dir to affect "
+ "tracker access")),
+ ('hupmonitor', 0,
+ _("whether to reopen the log file upon receipt of HUP signal")),
+ ('show_infopage', 1,
+ _("whether to display an info page when the tracker's root dir "
+ "is loaded")),
+ ('infopage_redirect', '',
+ _("a URL to redirect the info page to")),
+ ('show_names', 1,
+ _("whether to display names from allowed dir")),
+ ('favicon', '',
+ _("file containing x-icon data to return when browser requests "
+ "favicon.ico")),
+ ('only_local_override_ip', 2,
+ _("ignore the ip GET parameter from machines which aren't on "
+ "local network IPs (0 = never, 1 = always, 2 = ignore if NAT "
+ "checking is not enabled). HTTP proxy headers giving address "
+ "of original client are treated the same as --ip.")),
+ ('logfile', '',
+ _("file to write the tracker logs, use - for stdout (default)")),
+ ('allow_get', 0,
+ _("use with allowed_dir; adds a /file?hash={hash} url that "
+ "allows users to download the torrent file")),
+ ('keep_dead', 0,
+ _("keep dead torrents after they expire (so they still show up on your "
+ "/scrape and web page). Only matters if allowed_dir is not set")),
+ ('scrape_allowed', 'full',
+ _("scrape access allowed (can be none, specific or full)")),
+ ('max_give', 200,
+ _("maximum number of peers to give with any one request")),
+ ('twisted', -1,
+ _("Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted")),
+ ('pid', '/var/run/bittorrent-tracker.pid',
+ "Path to PID file")
+ ]
+
+def statefiletemplate(x):
+ if type(x) != DictType:
+ raise ValueError
+ for cname, cinfo in x.items():
+ if cname == 'peers':
+ for y in cinfo.values(): # The 'peers' key is a dictionary of SHA hashes (torrent ids)
+ if type(y) != DictType: # ... for the active torrents, and each is a dictionary
+ raise ValueError
+ for peerid, info in y.items(): # ... of client ids interested in that torrent
+ if (len(peerid) != 20):
+ raise ValueError
+ if type(info) != DictType: # ... each of which is also a dictionary
+ raise ValueError # ... which has an IP, a Port, and a Bytes Left count for that client for that torrent
+ if type(info.get('ip', '')) != StringType:
+ raise ValueError
+ port = info.get('port')
+ if type(port) not in (IntType, LongType) or port < 0:
+ raise ValueError
+ left = info.get('left')
+ if type(left) not in (IntType, LongType) or left < 0:
+ raise ValueError
+ elif cname == 'completed':
+ if (type(cinfo) != DictType): # The 'completed' key is a dictionary of SHA hashes (torrent ids)
+ raise ValueError # ... for keeping track of the total completions per torrent
+ for y in cinfo.values(): # ... each torrent has an integer value
+ if type(y) not in (IntType,LongType):
+ raise ValueError # ... for the number of reported completions for that torrent
+ elif cname == 'allowed':
+ if (type(cinfo) != DictType): # a list of info_hashes and included data
+ raise ValueError
+ if x.has_key('allowed_dir_files'):
+ adlist = [z[1] for z in x['allowed_dir_files'].values()]
+ for y in cinfo.keys(): # and each should have a corresponding key here
+ if not y in adlist:
+ raise ValueError
+ elif cname == 'allowed_dir_files':
+ if (type(cinfo) != DictType): # a list of files, their attributes and info hashes
+ raise ValueError
+ dirkeys = {}
+ for y in cinfo.values(): # each entry should have a corresponding info_hash
+ if not y[1]:
+ continue
+ if not x['allowed'].has_key(y[1]):
+ raise ValueError
+ if dirkeys.has_key(y[1]): # and each should have a unique info_hash
+ raise ValueError
+ dirkeys[y[1]] = 1
+
+
+alas = _("your file may exist elsewhere in the universe\nbut alas, not here\n")
+
+def isotime(secs = None):
+ if secs == None:
+ secs = time()
+ return strftime('%Y-%m-%d %H:%M UTC', gmtime(secs))
+
+http_via_filter = re.compile(' for ([0-9.]+)\Z')
+
+def _get_forwarded_ip(headers):
+ if headers.has_key('http_x_forwarded_for'):
+ header = headers['http_x_forwarded_for']
+ try:
+ x,y = header.split(',')
+ except:
+ return header
+ if not is_local_ip(x):
+ return x
+ return y
+ if headers.has_key('http_client_ip'):
+ return headers['http_client_ip']
+ if headers.has_key('http_via'):
+ x = http_via_filter.search(headers['http_via'])
+ try:
+ return x.group(1)
+ except:
+ pass
+ if headers.has_key('http_from'):
+ return headers['http_from']
+ return None
+
+def get_forwarded_ip(headers):
+ x = _get_forwarded_ip(headers)
+ if x is None or not is_valid_ipv4(x) or is_local_ip(x):
+ return None
+ return x
+
+def compact_peer_info(ip, port):
+ try:
+ s = ( ''.join([chr(int(i)) for i in ip.split('.')])
+ + chr((port & 0xFF00) >> 8) + chr(port & 0xFF) )
+ if len(s) != 6:
+ s = ''
+ except:
+ s = '' # not a valid IP, must be a domain name
+ return s
+
+def is_valid_ipv4(ip):
+ a = ip.split('.')
+ if len(a) != 4:
+ return False
+ try:
+ for x in a:
+ chr(int(x))
+ return True
+ except:
+ return False
+
+def is_local_ip(ip):
+ try:
+ v = [int(x) for x in ip.split('.')]
+ if v[0] == 10 or v[0] == 127 or v[:2] in ([192, 168], [169, 254]):
+ return 1
+ if v[0] == 172 and v[1] >= 16 and v[1] <= 31:
+ return 1
+ except ValueError:
+ return 0
+
+
+class Tracker(object):
+
+ def __init__(self, config, rawserver):
+ self.config = config
+ self.response_size = config['response_size']
+ self.max_give = config['max_give']
+ self.dfile = config['dfile']
+ self.natcheck = config['nat_check']
+ favicon = config['favicon']
+ self.favicon = None
+ if favicon:
+ try:
+ h = open(favicon,'r')
+ self.favicon = h.read()
+ h.close()
+ except:
+ print _("**warning** specified favicon file -- %s -- does not exist.") % favicon
+ self.rawserver = rawserver
+ self.cached = {} # format: infohash: [[time1, l1, s1], [time2, l2, s2], [time3, l3, s3]]
+ self.cached_t = {} # format: infohash: [time, cache]
+ self.times = {}
+ self.state = {}
+ self.seedcount = {}
+
+ self.only_local_override_ip = config['only_local_override_ip']
+ if self.only_local_override_ip == 2:
+ self.only_local_override_ip = not config['nat_check']
+
+ if os.path.exists(self.dfile):
+ try:
+ h = open(self.dfile, 'rb')
+ ds = h.read()
+ h.close()
+ tempstate = bdecode(ds)
+ if not tempstate.has_key('peers'):
+ tempstate = {'peers': tempstate}
+ statefiletemplate(tempstate)
+ self.state = tempstate
+ except:
+ print _("**warning** statefile %s corrupt; resetting") % \
+ self.dfile
+ self.downloads = self.state.setdefault('peers', {})
+ self.completed = self.state.setdefault('completed', {})
+
+ self.becache = {} # format: infohash: [[l1, s1], [l2, s2], [l3, s3]]
+ for infohash, ds in self.downloads.items():
+ self.seedcount[infohash] = 0
+ for x,y in ds.items():
+ if not y.get('nat',-1):
+ ip = y.get('given_ip')
+ if not (ip and self.allow_local_override(y['ip'], ip)):
+ ip = y['ip']
+ self.natcheckOK(infohash,x,ip,y['port'],y['left'])
+ if not y['left']:
+ self.seedcount[infohash] += 1
+
+ for infohash in self.downloads:
+ self.times[infohash] = {}
+ for peerid in self.downloads[infohash]:
+ self.times[infohash][peerid] = 0
+
+ self.reannounce_interval = config['reannounce_interval']
+ self.save_dfile_interval = config['save_dfile_interval']
+ self.show_names = config['show_names']
+ rawserver.add_task(self.save_dfile, self.save_dfile_interval)
+ self.prevtime = time()
+ self.timeout_downloaders_interval = config['timeout_downloaders_interval']
+ rawserver.add_task(self.expire_downloaders, self.timeout_downloaders_interval)
+ self.logfile = None
+ self.log = None
+ if (config['logfile'] != '') and (config['logfile'] != '-'):
+ try:
+ self.logfile = config['logfile']
+ self.log = open(self.logfile,'a')
+ sys.stdout = self.log
+ print _("# Log Started: "), isotime()
+ except:
+ print _("**warning** could not redirect stdout to log file: "), sys.exc_info()[0]
+
+ if config['hupmonitor']:
+ def huphandler(signum, frame, self = self):
+ try:
+ self.log.close ()
+ self.log = open(self.logfile,'a')
+ sys.stdout = self.log
+ print _("# Log reopened: "), isotime()
+ except:
+ print _("**warning** could not reopen logfile")
+
+ signal.signal(signal.SIGHUP, huphandler)
+
+ self.allow_get = config['allow_get']
+
+ if config['allowed_dir'] != '':
+ self.allowed_dir = config['allowed_dir']
+ self.parse_dir_interval = config['parse_dir_interval']
+ self.allowed = self.state.setdefault('allowed',{})
+ self.allowed_dir_files = self.state.setdefault('allowed_dir_files',{})
+ self.allowed_dir_blocked = {}
+ self.parse_allowed()
+ else:
+ try:
+ del self.state['allowed']
+ except:
+ pass
+ try:
+ del self.state['allowed_dir_files']
+ except:
+ pass
+ self.allowed = None
+
+ self.uq_broken = unquote('+') != ' '
+ self.keep_dead = config['keep_dead']
+
+ def allow_local_override(self, ip, given_ip):
+ return is_valid_ipv4(given_ip) and (
+ not self.only_local_override_ip or is_local_ip(ip) )
+
+ def get_infopage(self):
+ try:
+ if not self.config['show_infopage']:
+ return (404, 'Not Found', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, alas)
+ red = self.config['infopage_redirect']
+ if red != '':
+ return (302, 'Found', {'Content-Type': 'text/html', 'Location': red},
+ '<A HREF="'+red+'">Click Here</A>')
+
+ s = StringIO()
+ s.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n' \
+ '<html><head><title>BitTorrent download info</title>\n')
+ if self.favicon is not None:
+ s.write('<link rel="shortcut icon" href="/favicon.ico">\n')
+ s.write('</head>\n<body>\n' \
+ '<h3>BitTorrent download info</h3>\n'\
+ '<ul>\n'
+ '<li><strong>tracker version:</strong> %s</li>\n' \
+ '<li><strong>server time:</strong> %s</li>\n' \
+ '</ul>\n' % (version, isotime()))
+ if self.allowed is not None:
+ if self.show_names:
+ names = [ (value['name'], infohash)
+ for infohash, value in self.allowed.iteritems()]
+ else:
+ names = [(None, infohash) for infohash in self.allowed]
+ else:
+ names = [ (None, infohash) for infohash in self.downloads]
+ if not names:
+ s.write('<p>not tracking any files yet...</p>\n')
+ else:
+ names.sort()
+ tn = 0
+ tc = 0
+ td = 0
+ tt = 0 # Total transferred
+ ts = 0 # Total size
+ nf = 0 # Number of files displayed
+ if self.allowed is not None and self.show_names:
+ s.write('<table summary="files" border="1">\n' \
+ '<tr><th>info hash</th><th>torrent name</th><th align="right">size</th><th align="right">complete</th><th align="right">downloading</th><th align="right">downloaded</th><th align="right">transferred</th></tr>\n')
+ else:
+ s.write('<table summary="files">\n' \
+ '<tr><th>info hash</th><th align="right">complete</th><th align="right">downloading</th><th align="right">downloaded</th></tr>\n')
+ for name, infohash in names:
+ l = self.downloads[infohash]
+ n = self.completed.get(infohash, 0)
+ tn = tn + n
+ c = self.seedcount[infohash]
+ tc = tc + c
+ d = len(l) - c
+ td = td + d
+ nf = nf + 1
+ if self.allowed is not None and self.show_names:
+ if self.allowed.has_key(infohash):
+ sz = self.allowed[infohash]['length'] # size
+ ts = ts + sz
+ szt = sz * n # Transferred for this torrent
+ tt = tt + szt
+ if self.allow_get == 1:
+ linkname = '<a href="/file?info_hash=' + quote(infohash) + '">' + name + '</a>'
+ else:
+ linkname = name
+ s.write('<tr><td><code>%s</code></td><td>%s</td><td align="right">%s</td><td align="right">%i</td><td align="right">%i</td><td align="right">%i</td><td align="right">%s</td></tr>\n' \
+ % (b2a_hex(infohash), linkname, size_format(sz), c, d, n, size_format(szt)))
+ else:
+ s.write('<tr><td><code>%s</code></td><td align="right"><code>%i</code></td><td align="right"><code>%i</code></td><td align="right"><code>%i</code></td></tr>\n' \
+ % (b2a_hex(infohash), c, d, n))
+ ttn = 0
+ for i in self.completed.values():
+ ttn = ttn + i
+ if self.allowed is not None and self.show_names:
+ s.write('<tr><td align="right" colspan="2">%i files</td><td align="right">%s</td><td align="right">%i</td><td align="right">%i</td><td align="right">%i/%i</td><td align="right">%s</td></tr>\n'
+ % (nf, size_format(ts), tc, td, tn, ttn, size_format(tt)))
+ else:
+ s.write('<tr><td align="right">%i files</td><td align="right">%i</td><td align="right">%i</td><td align="right">%i/%i</td></tr>\n'
+ % (nf, tc, td, tn, ttn))
+ s.write('</table>\n' \
+ '<ul>\n' \
+ '<li><em>info hash:</em> SHA1 hash of the "info" section of the metainfo (*.torrent)</li>\n' \
+ '<li><em>complete:</em> number of connected clients with the complete file</li>\n' \
+ '<li><em>downloading:</em> number of connected clients still downloading</li>\n' \
+ '<li><em>downloaded:</em> reported complete downloads (total: current/all)</li>\n' \
+ '<li><em>transferred:</em> torrent size * total downloaded (does not include partial transfers)</li>\n' \
+ '</ul>\n')
+
+ s.write('</body>\n' \
+ '</html>\n')
+ return (200, 'OK', {'Content-Type': 'text/html; charset=iso-8859-1'}, s.getvalue())
+ except:
+ print_exc()
+ return (500, 'Internal Server Error', {'Content-Type': 'text/html; charset=iso-8859-1'}, 'Server Error')
+
+ def scrapedata(self, infohash, return_name = True):
+ l = self.downloads[infohash]
+ n = self.completed.get(infohash, 0)
+ c = self.seedcount[infohash]
+ d = len(l) - c
+ f = {'complete': c, 'incomplete': d, 'downloaded': n}
+ if return_name and self.show_names and self.allowed is not None:
+ f['name'] = self.allowed[infohash]['name']
+ return (f)
+
+ def get_scrape(self, paramslist):
+ fs = {}
+ if paramslist.has_key('info_hash'):
+ if self.config['scrape_allowed'] not in ['specific', 'full']:
+ return (400, 'Not Authorized', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'},
+ bencode({'failure reason':
+ _("specific scrape function is not available with this tracker.")}))
+ for infohash in paramslist['info_hash']:
+ if self.allowed is not None and infohash not in self.allowed:
+ continue
+ if infohash in self.downloads:
+ fs[infohash] = self.scrapedata(infohash)
+ else:
+ if self.config['scrape_allowed'] != 'full':
+ return (400, 'Not Authorized', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'},
+ bencode({'failure reason':
+ _("full scrape function is not available with this tracker.")}))
+ if self.allowed is not None:
+ hashes = self.allowed
+ else:
+ hashes = self.downloads
+ for infohash in hashes:
+ fs[infohash] = self.scrapedata(infohash)
+
+ return (200, 'OK', {'Content-Type': 'text/plain'}, bencode({'files': fs}))
+
+ def get_file(self, infohash):
+ if not self.allow_get:
+ return (400, 'Not Authorized', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'},
+ _("get function is not available with this tracker."))
+ if not self.allowed.has_key(infohash):
+ return (404, 'Not Found', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, alas)
+ fname = self.allowed[infohash]['file']
+ fpath = self.allowed[infohash]['path']
+ return (200, 'OK', {'Content-Type': 'application/x-bittorrent',
+ 'Content-Disposition': 'attachment; filename=' + fname},
+ open(fpath, 'rb').read())
+
+ def check_allowed(self, infohash, paramslist):
+ if self.allowed is not None:
+ if not self.allowed.has_key(infohash):
+ return (200, 'Not Authorized', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'},
+ bencode({'failure reason':
+ _("Requested download is not authorized for use with this tracker.")}))
+ if self.config['allowed_controls']:
+ if self.allowed[infohash].has_key('failure reason'):
+ return (200, 'Not Authorized', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'},
+ bencode({'failure reason': self.allowed[infohash]['failure reason']}))
+
+ return None
+
+ def add_data(self, infohash, event, ip, paramslist):
+ peers = self.downloads.setdefault(infohash, {})
+ ts = self.times.setdefault(infohash, {})
+ self.completed.setdefault(infohash, 0)
+ self.seedcount.setdefault(infohash, 0)
+
+ def params(key, default = None, l = paramslist):
+ if l.has_key(key):
+ return l[key][0]
+ return default
+
+ myid = params('peer_id','')
+ if len(myid) != 20:
+ raise ValueError, 'id not of length 20'
+ if event not in ['started', 'completed', 'stopped', 'snooped', None]:
+ raise ValueError, 'invalid event'
+ port = int(params('port',''))
+ if port < 0 or port > 65535:
+ raise ValueError, 'invalid port'
+ left = int(params('left',''))
+ if left < 0:
+ raise ValueError, 'invalid amount left'
+
+ peer = peers.get(myid)
+ mykey = params('key')
+ auth = not peer or peer.get('key', -1) == mykey or peer.get('ip') == ip
+
+ gip = params('ip')
+ local_override = gip and self.allow_local_override(ip, gip)
+ if local_override:
+ ip1 = gip
+ else:
+ ip1 = ip
+ if not auth and local_override and self.only_local_override_ip:
+ auth = True
+
+ if params('numwant') is not None:
+ rsize = min(int(params('numwant')), self.max_give)
+ else:
+ rsize = self.response_size
+
+ if event == 'stopped':
+ if peer and auth:
+ self.delete_peer(infohash,myid)
+
+ elif not peer:
+ ts[myid] = time()
+ peer = {'ip': ip, 'port': port, 'left': left}
+ if mykey:
+ peer['key'] = mykey
+ if gip:
+ peer['given ip'] = gip
+ if port:
+ if not self.natcheck or (local_override and self.only_local_override_ip):
+ peer['nat'] = 0
+ self.natcheckOK(infohash,myid,ip1,port,left)
+ else:
+ NatCheck(self.connectback_result,infohash,myid,ip1,port,self.rawserver)
+ else:
+ peer['nat'] = 2**30
+ if event == 'completed':
+ self.completed[infohash] += 1
+ if not left:
+ self.seedcount[infohash] += 1
+
+ peers[myid] = peer
+
+ else:
+ if not auth:
+ return rsize # return w/o changing stats
+
+ ts[myid] = time()
+ if not left and peer['left']:
+ self.completed[infohash] += 1
+ self.seedcount[infohash] += 1
+ if not peer.get('nat', -1):
+ for bc in self.becache[infohash]:
+ bc[1][myid] = bc[0][myid]
+ del bc[0][myid]
+ if peer['left']:
+ peer['left'] = left
+
+ recheck = False
+ if ip != peer['ip']:
+ peer['ip'] = ip
+ recheck = True
+ if gip != peer.get('given ip'):
+ if gip:
+ peer['given ip'] = gip
+ elif peer.has_key('given ip'):
+ del peer['given ip']
+ if local_override:
+ if self.only_local_override_ip:
+ self.natcheckOK(infohash,myid,ip1,port,left)
+ else:
+ recheck = True
+
+ if port and self.natcheck:
+ if recheck:
+ if peer.has_key('nat'):
+ if not peer['nat']:
+ l = self.becache[infohash]
+ y = not peer['left']
+ for x in l:
+ del x[y][myid]
+ del peer['nat'] # restart NAT testing
+ else:
+ natted = peer.get('nat', -1)
+ if natted and natted < self.natcheck:
+ recheck = True
+
+ if recheck:
+ NatCheck(self.connectback_result,infohash,myid,ip1,port,self.rawserver)
+
+ return rsize
+
+ def peerlist(self, infohash, stopped, is_seed, return_type, rsize):
+ data = {} # return data
+ seeds = self.seedcount[infohash]
+ data['complete'] = seeds
+ data['incomplete'] = len(self.downloads[infohash]) - seeds
+
+ if ( self.allowed is not None and self.config['allowed_controls'] and
+ self.allowed[infohash].has_key('warning message') ):
+ data['warning message'] = self.allowed[infohash]['warning message']
+
+ data['interval'] = self.reannounce_interval
+ if stopped or not rsize: # save some bandwidth
+ data['peers'] = []
+ return data
+
+ bc = self.becache.setdefault(infohash,[[{}, {}], [{}, {}], [{}, {}]])
+ len_l = len(bc[0][0])
+ len_s = len(bc[0][1])
+ if not (len_l+len_s): # caches are empty!
+ data['peers'] = []
+ return data
+ l_get_size = int(float(rsize)*(len_l)/(len_l+len_s))
+ cache = self.cached.setdefault(infohash,[None,None,None])[return_type]
+ if cache:
+ if cache[0] + self.config['min_time_between_cache_refreshes'] < time():
+ cache = None
+ else:
+ if ( (is_seed and len(cache[1]) < rsize)
+ or len(cache[1]) < l_get_size or not cache[1] ):
+ cache = None
+ if not cache:
+ vv = [[],[],[]]
+ cache = [ time(),
+ bc[return_type][0].values()+vv[return_type],
+ bc[return_type][1].values() ]
+ shuffle(cache[1])
+ shuffle(cache[2])
+ self.cached[infohash][return_type] = cache
+ for rr in xrange(len(self.cached[infohash])):
+ if rr != return_type:
+ try:
+ self.cached[infohash][rr][1].extend(vv[rr])
+ except:
+ pass
+ if len(cache[1]) < l_get_size:
+ peerdata = cache[1]
+ if not is_seed:
+ peerdata.extend(cache[2])
+ cache[1] = []
+ cache[2] = []
+ else:
+ if not is_seed:
+ peerdata = cache[2][l_get_size-rsize:]
+ del cache[2][l_get_size-rsize:]
+ rsize -= len(peerdata)
+ else:
+ peerdata = []
+ if rsize:
+ peerdata.extend(cache[1][-rsize:])
+ del cache[1][-rsize:]
+ if return_type == 2:
+ peerdata = ''.join(peerdata)
+ data['peers'] = peerdata
+ return data
+
+ def get(self, connection, path, headers):
+ ip = connection.get_ip()
+
+ nip = get_forwarded_ip(headers)
+ if nip and not self.only_local_override_ip:
+ ip = nip
+
+ paramslist = {}
+ def params(key, default = None, l = paramslist):
+ if l.has_key(key):
+ return l[key][0]
+ return default
+
+ try:
+ (scheme, netloc, path, pars, query, fragment) = urlparse(path)
+ if self.uq_broken == 1:
+ path = path.replace('+',' ')
+ query = query.replace('+',' ')
+ path = unquote(path)[1:]
+ for s in query.split('&'):
+ if s != '':
+ i = s.index('=')
+ kw = unquote(s[:i])
+ paramslist.setdefault(kw, [])
+ paramslist[kw] += [unquote(s[i+1:])]
+
+ if path == '' or path == 'index.html':
+ return self.get_infopage()
+ if path == 'scrape':
+ return self.get_scrape(paramslist)
+ if (path == 'file'):
+ return self.get_file(params('info_hash'))
+ if path == 'favicon.ico' and self.favicon is not None:
+ return (200, 'OK', {'Content-Type' : 'image/x-icon'}, self.favicon)
+ if path != 'announce':
+ return (404, 'Not Found', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, alas)
+
+ # main tracker function
+ infohash = params('info_hash')
+ if not infohash:
+ raise ValueError, 'no info hash'
+
+ notallowed = self.check_allowed(infohash, paramslist)
+ if notallowed:
+ return notallowed
+
+ event = params('event')
+
+ rsize = self.add_data(infohash, event, ip, paramslist)
+
+ except ValueError, e:
+ return (400, 'Bad Request', {'Content-Type': 'text/plain'},
+ 'you sent me garbage - ' + str(e))
+
+ if params('compact'):
+ return_type = 2
+ elif params('no_peer_id'):
+ return_type = 1
+ else:
+ return_type = 0
+
+ data = self.peerlist(infohash, event=='stopped', not params('left'),
+ return_type, rsize)
+
+ if paramslist.has_key('scrape'):
+ data['scrape'] = self.scrapedata(infohash, False)
+
+ return (200, 'OK', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, bencode(data))
+
+ def natcheckOK(self, infohash, peerid, ip, port, not_seed):
+ bc = self.becache.setdefault(infohash,[[{}, {}], [{}, {}], [{}, {}]])
+ bc[0][not not_seed][peerid] = Bencached(bencode({'ip': ip, 'port': port,
+ 'peer id': peerid}))
+ bc[1][not not_seed][peerid] = Bencached(bencode({'ip': ip, 'port': port}))
+ bc[2][not not_seed][peerid] = compact_peer_info(ip, port)
+
+ def natchecklog(self, peerid, ip, port, result):
+ year, month, day, hour, minute, second, a, b, c = localtime(time())
+ print '%s - %s [%02d/%3s/%04d:%02d:%02d:%02d] "!natcheck-%s:%i" %i 0 - -' % (
+ ip, quote(peerid), day, months[month], year, hour, minute, second,
+ ip, port, result)
+
+ def connectback_result(self, result, downloadid, peerid, ip, port):
+ record = self.downloads.get(downloadid, {}).get(peerid)
+ if ( record is None
+ or (record['ip'] != ip and record.get('given ip') != ip)
+ or record['port'] != port ):
+ if self.config['log_nat_checks']:
+ self.natchecklog(peerid, ip, port, 404)
+ return
+ if self.config['log_nat_checks']:
+ if result:
+ x = 200
+ else:
+ x = 503
+ self.natchecklog(peerid, ip, port, x)
+ if not record.has_key('nat'):
+ record['nat'] = int(not result)
+ if result:
+ self.natcheckOK(downloadid,peerid,ip,port,record['left'])
+ elif result and record['nat']:
+ record['nat'] = 0
+ self.natcheckOK(downloadid,peerid,ip,port,record['left'])
+ elif not result:
+ record['nat'] += 1
+
+ def save_dfile(self):
+ self.rawserver.add_task(self.save_dfile, self.save_dfile_interval)
+ h = open(self.dfile, 'wb')
+ h.write(bencode(self.state))
+ h.close()
+
+ def parse_allowed(self):
+ self.rawserver.add_task(self.parse_allowed, self.parse_dir_interval)
+
+ # logging broken .torrent files would be useful but could confuse
+ # programs parsing log files, so errors are just ignored for now
+ def ignore(message):
+ pass
+ r = parsedir(self.allowed_dir, self.allowed, self.allowed_dir_files,
+ self.allowed_dir_blocked, ignore,include_metainfo = False)
+ ( self.allowed, self.allowed_dir_files, self.allowed_dir_blocked,
+ added, garbage2 ) = r
+
+ for infohash in added:
+ self.downloads.setdefault(infohash, {})
+ self.completed.setdefault(infohash, 0)
+ self.seedcount.setdefault(infohash, 0)
+
+ self.state['allowed'] = self.allowed
+ self.state['allowed_dir_files'] = self.allowed_dir_files
+
+ def delete_peer(self, infohash, peerid):
+ dls = self.downloads[infohash]
+ peer = dls[peerid]
+ if not peer['left']:
+ self.seedcount[infohash] -= 1
+ if not peer.get('nat',-1):
+ l = self.becache[infohash]
+ y = not peer['left']
+ for x in l:
+ del x[y][peerid]
+ del self.times[infohash][peerid]
+ del dls[peerid]
+
+ def expire_downloaders(self):
+ for infohash, peertimes in self.times.items():
+ for myid, t in peertimes.items():
+ if t < self.prevtime:
+ self.delete_peer(infohash, myid)
+ self.prevtime = time()
+ if (self.keep_dead != 1):
+ for key, peers in self.downloads.items():
+ if len(peers) == 0 and (self.allowed is None or
+ key not in self.allowed):
+ del self.times[key]
+ del self.downloads[key]
+ del self.seedcount[key]
+ self.rawserver.add_task(self.expire_downloaders, self.timeout_downloaders_interval)
+
+def track(args):
+ if len(args) == 0:
+ print formatDefinitions(defaults, 80)
+ return
+ try:
+ config, files = parseargs(args, defaults, 0, 0)
+ except ValueError, e:
+ print _("error: ") + str(e)
+ print _("run with no arguments for parameter explanations")
+ return
+ file(config['pid'], 'w').write(str(os.getpid()))
+ r = RawServer(Event(), config)
+ t = Tracker(config, r)
+ s = r.create_serversocket(config['port'], config['bind'], True)
+ r.start_listening(s, HTTPHandler(t.get, config['min_time_between_log_flushes']))
+ r.listen_forever()
+ t.save_dfile()
+ print _("# Shutting down: ") + isotime()
+
+def size_format(s):
+ if (s < 1024):
+ r = str(s) + 'B'
+ elif (s < 1048576):
+ r = str(int(s/1024)) + 'KiB'
+ elif (s < 1073741824):
+ r = str(int(s/1048576)) + 'MiB'
+ elif (s < 1099511627776):
+ r = str(int((s/1073741824.0)*100.0)/100.0) + 'GiB'
+ else:
+ r = str(int((s/1099511627776.0)*100.0)/100.0) + 'TiB'
+ return(r)
diff --git a/BitTorrent/zurllib.py b/BitTorrent/zurllib.py
new file mode 100644
index 0000000..8bbe5ba
--- /dev/null
+++ b/BitTorrent/zurllib.py
@@ -0,0 +1,269 @@
+#
+# zurllib.py
+#
+# This is (hopefully) a drop-in for urllib which will request gzip/deflate
+# compression and then decompress the output if a compressed response is
+# received while maintaining the API.
+#
+# by Robert Stone 2/22/2003
+# extended by Matt Chisholm
+# tracker announce --bind support added by Jeremy Evans 11/2005
+
+import sys
+
+import threading
+import thread
+from BitTorrent import PeerID
+user_agent = PeerID.make_id()
+del PeerID
+
+import urllib2
+OldOpenerDirector = urllib2.OpenerDirector
+
+class MyOpenerDirector(OldOpenerDirector):
+ def __init__(self):
+ OldOpenerDirector.__init__(self)
+ self.addheaders = [('User-agent', user_agent)]
+
+urllib2.OpenerDirector = MyOpenerDirector
+
+del urllib2
+
+from httplib import HTTPConnection, HTTP
+from urllib import *
+from urllib2 import *
+from gzip import GzipFile
+from StringIO import StringIO
+import pprint
+
+DEBUG=0
+
+http_bindaddr = None
+
+# ow ow ow.
+# this is here so we can track open http connections in our pending
+# connection count. we have to buffer because maybe urllib connections
+# start before rawserver does - hopefully not more than 10 of them!
+#
+# this can all go away when we use a reasonable http client library
+# and the connections are managed inside rawserver
+class PreRawServerBuffer(object):
+ def __init__(self):
+ self.pending_sockets = {}
+ self.pending_sockets_lock = threading.Lock()
+
+ def _add_pending_connection(self, addr):
+ # the XP connection rate limiting is unique at the IP level
+ assert isinstance(addr, str)
+ self.pending_sockets_lock.acquire()
+ self.__add_pending_connection(addr)
+ self.pending_sockets_lock.release()
+
+ def __add_pending_connection(self, addr):
+ if addr not in self.pending_sockets:
+ self.pending_sockets[addr] = 1
+ else:
+ self.pending_sockets[addr] += 1
+
+ def _remove_pending_connection(self, addr):
+ self.pending_sockets_lock.acquire()
+ self.__remove_pending_connection(addr)
+ self.pending_sockets_lock.release()
+
+ def __remove_pending_connection(self, addr):
+ self.pending_sockets[addr] -= 1
+ if self.pending_sockets[addr] <= 0:
+ del self.pending_sockets[addr]
+rawserver = PreRawServerBuffer()
+
+def bind_tracker_connection(bindaddr):
+ global http_bindaddr
+ http_bindaddr = bindaddr
+
+def set_zurllib_rawserver(new_rawserver):
+ global rawserver
+ for addr in rawserver.pending_sockets:
+ new_rawserver._add_pending_connections(addr)
+ rawserver._remove_pending_connection(addr)
+ assert len(rawserver.pending_sockets) == 0
+ rawserver = new_rawserver
+
+unsafe_threads = []
+def add_unsafe_thread():
+ global unsafe_threads
+ unsafe_threads.append(thread.get_ident())
+
+class BindingHTTPConnection(HTTPConnection):
+ def connect(self):
+
+ ident = thread.get_ident()
+ # never, ever, ever call urlopen from any of these threads
+ assert ident not in unsafe_threads
+
+ """Connect to the host and port specified in __init__."""
+ msg = "getaddrinfo returns an empty list"
+ for res in socket.getaddrinfo(self.host, self.port, 0,
+ socket.SOCK_STREAM):
+ af, socktype, proto, canonname, sa = res
+
+ addr = sa[0]
+ # the obvious multithreading problem is avoided by using locks.
+ # the lock is only acquired during the function call, so there's
+ # no danger of urllib blocking rawserver.
+ rawserver._add_pending_connection(addr)
+ try:
+ self.sock = socket.socket(af, socktype, proto)
+ if http_bindaddr:
+ self.sock.bind((http_bindaddr, 0))
+ if self.debuglevel > 0:
+ print "connect: (%s, %s)" % (self.host, self.port)
+ self.sock.connect(sa)
+ except socket.error, msg:
+ if self.debuglevel > 0:
+ print 'connect fail:', (self.host, self.port)
+ if self.sock:
+ self.sock.close()
+ self.sock = None
+ rawserver._remove_pending_connection(addr)
+
+ if self.sock:
+ break
+
+ if not self.sock:
+ raise socket.error, msg
+
+class BindingHTTP(HTTP):
+ _connection_class = BindingHTTPConnection
+
+if sys.version_info >= (2,4):
+ BindingHTTP = BindingHTTPConnection
+
+class HTTPContentEncodingHandler(HTTPHandler):
+ """Inherit and add gzip/deflate/etc support to HTTP gets."""
+ def http_open(self, req):
+ # add the Accept-Encoding header to the request
+ # support gzip encoding (identity is assumed)
+ req.add_header("Accept-Encoding","gzip")
+ if DEBUG:
+ print "Sending:"
+ print req.headers
+ print "\n"
+ fp = self.do_open(BindingHTTP, req)
+ headers = fp.headers
+ if DEBUG:
+ pprint.pprint(headers.dict)
+ url = fp.url
+ resp = addinfourldecompress(fp, headers, url)
+ if hasattr(fp, 'code'):
+ resp.code = fp.code
+ if hasattr(fp, 'msg'):
+ resp.msg = fp.msg
+ return resp
+
+class addinfourldecompress(addinfourl):
+ """Do gzip decompression if necessary. Do addinfourl stuff too."""
+ def __init__(self, fp, headers, url):
+ # we need to do something more sophisticated here to deal with
+ # multiple values? What about other weird crap like q-values?
+ # basically this only works for the most simplistic case and will
+ # break in some other cases, but for now we only care about making
+ # this work with the BT tracker so....
+ if headers.has_key('content-encoding') and headers['content-encoding'] == 'gzip':
+ if DEBUG:
+ print "Contents of Content-encoding: " + headers['Content-encoding'] + "\n"
+ self.gzip = 1
+ self.rawfp = fp
+ fp = GzipStream(fp)
+ else:
+ self.gzip = 0
+ return addinfourl.__init__(self, fp, headers, url)
+
+ def close(self):
+ self.fp.close()
+ if self.gzip:
+ self.rawfp.close()
+
+ def iscompressed(self):
+ return self.gzip
+
+class GzipStream(StringIO):
+ """Magically decompress a file object.
+
+ This is not the most efficient way to do this but GzipFile() wants
+ to seek, etc, which won't work for a stream such as that from a socket.
+ So we copy the whole shebang info a StringIO object, decompress that
+ then let people access the decompressed output as a StringIO object.
+
+ The disadvantage is memory use and the advantage is random access.
+
+ Will mess with fixing this later.
+ """
+
+ def __init__(self,fp):
+ self.fp = fp
+
+ # this is nasty and needs to be fixed at some point
+ # copy everything into a StringIO (compressed)
+ compressed = StringIO()
+ r = fp.read()
+ while r:
+ compressed.write(r)
+ r = fp.read()
+ # now, unzip (gz) the StringIO to a string
+ compressed.seek(0,0)
+ gz = GzipFile(fileobj = compressed)
+ str = ''
+ r = gz.read()
+ while r:
+ str += r
+ r = gz.read()
+ # close our utility files
+ compressed.close()
+ gz.close()
+ # init our stringio selves with the string
+ StringIO.__init__(self, str)
+ del str
+
+ def close(self):
+ self.fp.close()
+ return StringIO.close(self)
+
+
+def test():
+ """Test this module.
+
+ At the moment this is lame.
+ """
+
+ print "Running unit tests.\n"
+
+ def printcomp(fp):
+ try:
+ if fp.iscompressed():
+ print "GET was compressed.\n"
+ else:
+ print "GET was uncompressed.\n"
+ except:
+ print "no iscompressed function! this shouldn't happen"
+
+ print "Trying to GET a compressed document...\n"
+ fp = urlopen('http://a.scarywater.net/hng/index.shtml')
+ print fp.read()
+ printcomp(fp)
+ fp.close()
+
+ print "Trying to GET an unknown document...\n"
+ fp = urlopen('http://www.otaku.org/')
+ print fp.read()
+ printcomp(fp)
+ fp.close()
+
+
+#
+# Install the HTTPContentEncodingHandler that we've defined above.
+#
+install_opener(build_opener(HTTPContentEncodingHandler, ProxyHandler({})))
+
+if __name__ == '__main__':
+ test()
+
diff --git a/INSTALL.unix.txt b/INSTALL.unix.txt
new file mode 100644
index 0000000..3e19b87
--- /dev/null
+++ b/INSTALL.unix.txt
@@ -0,0 +1,65 @@
+Before installing BitTorrent 4.x, remove any older versions of the
+BitTorrent client that may be installed.
+
+Most of the following instructions require root privileges.
+
+How to install BitTorrent on a generic UNIX system:
+----------------------------------------
+Install Python, version 2.2.1 or later
+http://python.org/
+
+Install GTK, version 2.2 or later
+http://gtk.org/
+
+Install pygtk, version 2.4 or later
+http://pygtk.org/
+
+Install BitTorrent by running:
+
+$ python setup.py install
+
+Optionally, untar and put a line in /etc/mailcap which is similar to
+the following, only replace the path to /usr/bin/btdownloadgui.py with
+the one it's actually in.
+
+application/x-bittorrent; /usr/bin/btdownloadgui.py %s; test=test -n "$DISPLAY"
+
+You may have to restart your web browser for it to start using
+BitTorrent.
+
+If you're using a web browser which doesn't respect /etc/mailcap you
+can go into the mime-type configuration for your web browser and
+manually associate application/x-bittorrent with btdownloadgui.py
+(with the appropriate path, of course.)
+
+
+How to build a .deb format Debian package and install it:
+----------------------------------------
+First, remove any older versions of BitTorrent that may be installed:
+(this command will also remove BitTornado)
+
+$ apt-get remove bittorrent bittorrent-gui
+
+Then use setup and alien to generate a .deb format package:
+
+$ python setup.py bdist_dumb
+$ cd dist/
+$ alien BitTorrent-4.x.y.linux-i686.tar.gz
+
+you should now have a .deb package in: bittorrent-4.x.y.linux_i686-2_all.deb
+
+then install the .deb:
+
+$ dpkg -i bittorrent-4.x.y.linux_i686-2_all.deb
+
+
+How to build an .rpm format package and install it:
+----------------------------------------
+
+Generate an .rpm format package:
+
+$ python setup.py bdist_rpm
+
+Then install the .rpm:
+
+$ rpm -i dist/BitTorrent-4.x.y-1.noarch.rpm
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..4b7a674
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,143 @@
+BitTorrent Open Source License
+
+Version 1.1
+
+This BitTorrent Open Source License (the "License") applies to the BitTorrent client and related software products as well as any updates or maintenance releases of that software ("BitTorrent Products") that are distributed by BitTorrent, Inc. ("Licensor"). Any BitTorrent Product licensed pursuant to this License is a Licensed Product. Licensed Product, in its entirety, is protected by U.S. copyright law. This License identifies the terms under which you may use, copy, distribute or modify Licensed Product.
+
+Preamble
+
+This Preamble is intended to describe, in plain English, the nature and scope of this License. However, this Preamble is not a part of this license. The legal effect of this License is dependent only upon the terms of the License and not this Preamble.
+
+This License complies with the Open Source Definition and is derived from the Jabber Open Source License 1.0 (the "JOSL"), which has been approved by Open Source Initiative. Sections 4(c) and 4(f)(iii) from the JOSL have been deleted.
+
+This License provides that:
+
+1. You may use or give away the Licensed Product, alone or as a component of an aggregate software distribution containing programs from several different sources. No royalty or other fee is required.
+
+2. Both Source Code and executable versions of the Licensed Product, including Modifications made by previous Contributors, are available for your use. (The terms "Licensed Product," "Modifications," "Contributors" and "Source Code" are defined in the License.)
+
+3. You are allowed to make Modifications to the Licensed Product, and you can create Derivative Works from it. (The term "Derivative Works" is defined in the License.)
+
+4. By accepting the Licensed Product under the provisions of this License, you agree that any Modifications you make to the Licensed Product and then distribute are governed by the provisions of this License. In particular, you must make the Source Code of your Modifications available to others free of charge and without a royalty.
+
+5. You may sell, accept donations or otherwise receive compensation for executable versions of a Licensed Product, without paying a royalty or other fee to the Licensor or any Contributor, provided that such executable versions contain your or another Contributor?s material Modifications. For the avoidance of doubt, to the extent your executable version of a Licensed Product does not contain your or another Contributor?s material Modifications, you may not sell, accept donations or otherwise receive compensation for such executable.
+
+You may use the Licensed Product for any purpose, but the Licensor is not providing you any warranty whatsoever, nor is the Licensor accepting any liability in the event that the Licensed Product doesn't work properly or causes you any injury or damages.
+
+6. If you sublicense the Licensed Product or Derivative Works, you may charge fees for warranty or support, or for accepting indemnity or liability obligations to your customers. You cannot charge for, sell, accept donations or otherwise receive compensation for the Source Code.
+
+7. If you assert any patent claims against the Licensor relating to the Licensed Product, or if you breach any terms of the License, your rights to the Licensed Product under this License automatically terminate.
+
+You may use this License to distribute your own Derivative Works, in which case the provisions of this License will apply to your Derivative Works just as they do to the original Licensed Product.
+
+Alternatively, you may distribute your Derivative Works under any other OSI-approved Open Source license, or under a proprietary license of your choice. If you use any license other than this License, however, you must continue to fulfill the requirements of this License (including the provisions relating to publishing the Source Code) for those portions of your Derivative Works that consist of the Licensed Product, including the files containing Modifications.
+
+New versions of this License may be published from time to time in connection with new versions of a Licensed Product or otherwise. You may choose to continue to use the license terms in this version of the License for the Licensed Product that was originally licensed hereunder, however, the new versions of this License will at all times apply to new versions of the Licensed Product released by Licensor after the release of the new version of this License. Only the Licensor has the right to change the License terms as they apply to the Licensed Product.
+
+This License relies on precise definitions for certain terms. Those terms are defined when they are first used, and the definitions are repeated for your convenience in a Glossary at the end of the License.
+
+License Terms
+
+1. Grant of License From Licensor. Subject to the terms and conditions of this License, Licensor hereby grants you a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims, to do the following:
+
+a. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by a Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as part of Derivative Works.
+
+b. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof or Derivative Works thereof.
+
+2. Grant of License to Modifications From Contributor. "Modifications" means any additions to or deletions from the substance or structure of (i) a file containing a Licensed Product, or (ii) any new file that contains any part of a Licensed Product. Hereinafter in this License, the term "Licensed Product" shall include all previous Modifications that you receive from any Contributor. Subject to the terms and conditions of this License, By application of the provisions in Section 4(a) below, each person or entity who created or contributed to the creation of, and distributed, a Modification (a "Contributor") hereby grants you a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims, to do the following:
+
+a. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by such Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as part of Derivative Works.
+
+b. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof or Derivative Works thereof.
+
+3. Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. No patent license is granted separate from the Licensed Product, for code that you delete from the Licensed Product, or for combinations of the Licensed Product with other software or hardware. No right is granted to the trademarks of Licensor or any Contributor even if such marks are included in the Licensed Product. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any code that Licensor otherwise would have a right to license. As an express condition for your use of the Licensed Product, you hereby agree that you will not, without the prior written consent of Licensor, use any trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. For the avoidance of doubt and without limiting the foregoing, you hereby agree that you will not use or display any trademark of Licensor or any Contributor in any domain name, directory filepath, advertisement, link or other reference to you in any manner or in any media.
+
+4. Your Obligations Regarding Distribution.
+
+a. Application of This License to Your Modifications. As an express condition for your use of the Licensed Product, you hereby agree that any Modifications that you create or to which you contribute, and which you distribute, are governed by the terms of this License including, without limitation, Section 2. Any Modifications that you create or to which you contribute may be distributed only under the terms of this License or a future version of this License released under Section 7. You must include a copy of this License with every copy of the Modifications you distribute. You agree not to offer or impose any terms on any Source Code or executable version of the Licensed Product or Modifications that alter or restrict the applicable version of this License or the recipients' rights hereunder. However, you may include an additional document offering the additional rights described in Section 4(d).
+
+b. Availability of Source Code. You must make available, without charge, under the terms of this License, the Source Code of the Licensed Product and any Modifications that you distribute, either on the same media as you distribute any executable or other form of the Licensed Product, or via a mechanism generally accepted in the software development community for the electronic transfer of data (an "Electronic Distribution Mechanism"). The Source Code for any version of Licensed Product or Modifications that you distribute must remain available for as long as any executable or other form of the Licensed Product is distributed by you. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+c. Intellectual Property Matters.
+
+ i. Third Party Claims. If you have knowledge that a license to a third party's intellectual property right is required to exercise the rights granted by this License, you must include a text file with the Source Code distribution titled "LEGAL" that describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after you make any Modifications available as described in Section 4(b), you shall promptly modify the LEGAL file in all copies you make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Licensed Product from you that new knowledge has been obtained.
+
+ ii. Contributor APIs. If your Modifications include an application programming interface ("API") and you have knowledge of patent licenses that are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
+
+ iii. Representations. You represent that, except as disclosed pursuant to 4(c)(i) above, you believe that any Modifications you distribute are your original creations and that you have sufficient rights to grant the rights conveyed by this License.
+
+d. Required Notices. You must duplicate this License in any documentation you provide along with the Source Code of any Modifications you create or to which you contribute, and which you distribute, wherever you describe recipients' rights relating to Licensed Product. You must duplicate the notice contained in Exhibit A (the "Notice") in each file of the Source Code of any copy you distribute of the Licensed Product. If you created a Modification, you may add your name as a Contributor to the Notice. If it is not possible to put the Notice in a particular Source Code file due to its structure, then you must include such Notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Licensed Product. However, you may do so only on your own behalf, and not on behalf of the Licensor or any Contributor. You must make it clear that any such warranty, support, indemnity or liability obligation is offered by you alone, and you hereby agree to indemnify the Licensor and every Contributor for any liability incurred by the Licensor or such Contributor as a result of warranty, support, indemnity or liability terms you offer.
+
+e. Distribution of Executable Versions. You may distribute Licensed Product as an executable program under a license of your choice that may contain terms different from this License provided (i) you have satisfied the requirements of Sections 4(a) through 4(d) for that distribution, (ii) you include a conspicuous notice in the executable version, related documentation and collateral materials stating that the Source Code version of the
+Licensed Product is available under the terms of this License, including a description of how and where you have fulfilled the obligations of Section 4(b), and (iii) you make it clear that any terms that differ from this License are offered by you alone, not by Licensor or any Contributor. You hereby agree to indemnify the Licensor and every Contributor for any liability incurred by Licensor or such Contributor as a result of any terms you offer.
+
+f. Distribution of Derivative Works. You may create Derivative Works (e.g., combinations of some or all of the Licensed Product with other code) and distribute the Derivative Works as products under any other license you select, with the proviso that the requirements of this License are fulfilled for those portions of the Derivative Works that consist of the Licensed Product or any Modifications thereto.
+
+g. Compensation for Distribution of Executable Versions of Licensed Products, Modifications or Derivative Works. Notwithstanding any provision of this License to the contrary, by distributing, selling, licensing, sublicensing or otherwise making available any Licensed Product, or Modification or Derivative Work thereof, you and Licensor hereby acknowledge and agree that you may sell, license or sublicense for a fee, accept donations or otherwise receive compensation for executable versions of a Licensed Product, without paying a royalty or other fee to the Licensor or any other Contributor, provided that such executable versions (i) contain your or another Contributor?s material Modifications, or (ii) are otherwise material Derivative Works. For purposes of this License, an executable version of the Licensed Product will be deemed to contain a material Modification, or will otherwise be deemed a material Derivative Work, if (a) the Licensed Product is modified with your own or a third party?s software programs or other code, and/or the Licensed Product is combined with a number of your own or a third party?s software programs or code, respectively, and (b) such software programs or code add or contribute material value, functionality or features to the License Product. For the avoidance of doubt, to the extent your executable version of a Licensed Product does not contain your or another Contributor?s material Modifications or is otherwise not a material Derivative Work, in each case as contemplated herein, you may not sell, license or sublicense for a fee, accept donations or otherwise receive compensation for such executable. Additionally, without limitation of the foregoing and notwithstanding any provision of this License to the contrary, you cannot charge for, sell, license or sublicense for a fee, accept donations or otherwise receive compensation for the Source Code.
+
+5. Inability to Comply Due to Statute or Regulation. If it is impossible for you to comply with any of the terms of this License with respect to some or all of the Licensed Product due to statute, judicial order, or regulation, then you must (i) comply with the terms of this License to the maximum extent possible, (ii) cite the statute or regulation that prohibits you from adhering to the License, and (iii) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 4(d), and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill at computer programming to be able to understand it.
+
+6. Application of This License. This License applies to code to which Licensor or Contributor has attached the Notice in Exhibit A, which is incorporated herein by this reference.
+
+7. Versions of This License.
+
+a. New Versions. Licensor may publish from time to time revised and/or new versions of the License.
+
+b. Effect of New Versions. Once Licensed Product has been published under a particular version of the License, you may always continue to use it under the terms of that version, provided that any such license be in full force and effect at the time, and has not been revoked or otherwise terminated. You may also choose to use such Licensed Product under the terms of any subsequent version (but not any prior version) of the License published by Licensor. No one other than Licensor has the right to modify the terms applicable to Licensed Product created under this License.
+
+c. Derivative Works of this License. If you create or use a modified version of this License, which you may do only in order to apply it to software that is not already a Licensed Product under this License, you must rename your license so that it is not confusingly similar to this License, and must make it clear that your license contains terms that differ from this License. In so naming your license, you may not use any trademark of Licensor or any Contributor.
+
+8. Disclaimer of Warranty. LICENSED PRODUCT IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE LICENSED PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LICENSED PRODUCT IS WITH YOU. SHOULD LICENSED PRODUCT PROVE DEFECTIVE IN ANY RESPECT, YOU (AND NOT THE LICENSOR OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS
+DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF LICENSED PRODUCT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+9. Termination.
+
+a. Automatic Termination Upon Breach. This license and the rights granted hereunder will terminate automatically if you fail to comply with the terms herein and fail to cure such breach within ten (10) days of being notified of the breach by the Licensor. For purposes of this provision, proof of delivery via email to the address listed in the ?WHOIS? database of the registrar for any website through which you distribute or market any Licensed Product, or to any alternate email address which you designate in writing to the Licensor, shall constitute sufficient notification. All sublicenses to the Licensed Product that are properly granted shall survive any termination of this license so long as they continue to complye with the terms of this License. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
+
+b. Termination Upon Assertion of Patent Infringement. If you initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Licensor or a Contributor (Licensor or Contributor against whom you file such an action is referred to herein as Respondent) alleging that Licensed Product directly or indirectly infringes any patent, then any and all rights granted by such Respondent to you under Sections 1 or 2 of this License shall terminate prospectively upon sixty (60) days notice from Respondent (the "Notice Period") unless within that Notice Period you either agree in writing (i) to pay Respondent a mutually agreeable reasonably royalty for your past or future use of Licensed Product made by such Respondent, or (ii) withdraw your litigation claim with respect to Licensed Product against such Respondent. If within said Notice Period a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Licensor to you under Sections 1 and 2 automatically terminate at the expiration of said Notice Period.
+
+c. Reasonable Value of This License. If you assert a patent infringement claim against Respondent alleging that Licensed Product directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by said Respondent under Sections 1 and 2 shall be taken into account in determining the amount or value of any payment or license.
+
+d. No Retroactive Effect of Termination. In the event of termination under Sections 9(a) or 9(b) above, all end user license agreements (excluding licenses to distributors and resellers) that have been validly granted by you or any distributor hereunder prior to termination shall survive termination.
+
+10. Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE LICENSOR, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF LICENSED PRODUCT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+11. Responsibility for Claims. As between Licensor and Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License. You agree to work with Licensor and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+12. U.S. Government End Users. The Licensed Product is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software and commercial computer software documentation, as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Licensed Product with only those rights set forth herein.
+
+13. Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. You expressly agree that in any litigation relating to this license the losing party shall be responsible for costs including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+14. Definition of You in This License. You throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 7. For legal entities, you includes any entity that controls, is controlled by, is under common control with, or affiliated with, you. For purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. You are responsible for advising any affiliated entity of the terms of this License, and that any rights or privileges derived from or obtained by way of this License are subject to the restrictions outlined herein.
+
+15. Glossary. All defined terms in this License that are used in more than one Section of this License are repeated here, in alphabetical order, for the convenience of the reader. The Section of this License in which each defined term is first used is shown in parentheses.
+
+Contributor: Each person or entity who created or contributed to the creation of, and distributed, a Modification. (See Section 2)
+
+Derivative Works: That term as used in this License is defined under U.S. copyright law. (See Section 1(b))
+
+License: This BitTorrent Open Source License. (See first paragraph of License)
+
+Licensed Product: Any BitTorrent Product licensed pursuant to this License. The term "Licensed Product" includes all previous Modifications from any Contributor that you receive. (See first paragraph of License and Section 2)
+
+Licensor: BitTorrent, Inc. (See first paragraph of License)
+
+Modifications: Any additions to or deletions from the substance or structure of (i) a file containing Licensed Product, or (ii) any new file that contains any part of Licensed Product. (See Section 2)
+
+Notice: The notice contained in Exhibit A. (See Section 4(e))
+
+Source Code: The preferred form for making modifications to the Licensed Product, including all modules contained therein, plus any associated interface definition files, scripts used to control compilation and installation of an executable program, or a list of differential comparisons against the Source Code of the Licensed Product. (See Section 1(a))
+
+You: This term is defined in Section 14 of this License.
+
+
+EXHIBIT A
+
+The Notice below must appear in each file of the Source Code of any copy you distribute of the Licensed Product or any hereto. Contributors to any Modifications may add their own copyright notices to identify their own contributions.
+
+License:
+
+The contents of this file are subject to the BitTorrent Open Source License Version 1.0 (the License). You may not copy or use this file, in either source code or executable form, except in compliance with the License. You may obtain a copy of the License at http://www.bittorrent.com/license/.
+
+Software distributed under the License is distributed on an AS IS basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..265ef7d
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,32 @@
+# include anything in here that is not automatically picked up by distutils
+include BitTorrent/__init__.py
+
+# images and icons
+include images/bittorrent.ico
+include images/icons/default/*.png images/icons/old/*.png
+include images/logo/bittorrent_[0-9]*.png
+
+# documentation files
+include credits.txt credits-l10n.txt LICENSE.txt README.txt redirdonate.html INSTALL.unix.txt TRACKERLESS.txt MANIFEST.in public.key
+
+# include windows build files in the source
+include windows_installer/*
+
+# localization stuffs
+include makei18n.sh language_codes.py po/*po
+
+# include all top level scripts
+include bittorrent.py
+include bittorrent-console.py
+include bittorrent-curses.py
+
+include maketorrent.py
+include maketorrent-console.py
+
+include launchmany-console.py
+include launchmany-curses.py
+
+include bittorrent-tracker.py
+
+include changetracker-console.py
+include torrentinfo-console.py
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..17bc634
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: BitTorrent
+Version: 4.4.0
+Summary: UNKNOWN
+Home-page: http://bittorrent.com/
+Author: Bram Cohen
+Author-email: bram@bitconjurer.org
+License: BitTorrent Open Source License
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..005988c
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,133 @@
+About BitTorrent:
+=================
+
+BitTorrent is a tool for distributing files. It's extremely easy to
+use - downloads are started by clicking on hyperlinks. Whenever more
+than one person is downloading at once they send pieces of the file(s)
+to each other, thus relieving the central server's bandwidth
+burden. Even with many simultaneous downloads, the upload burden on
+the central server remains quite small, since each new downloader
+introduces new upload capacity.
+
+
+Instructions for users:
+=======================
+
+Once you install BitTorrent, you should be able to download .torrent
+files. If you have any questions, please read the FAQ:
+
+http://www.bittorrent.com/FAQ.html
+
+If you find a bug, check the FAQ for your bug. If your bug is not in
+the FAQ, please send email to:
+
+bugs at bittorrent.com
+
+
+Instructions for publishers:
+============================
+
+Instructions for trackerless operation are in TRACKERLESS.txt.
+
+To start hosting -
+
+1) start running a tracker
+
+First, you need a tracker. If you're on a dynamic IP or otherwise
+unreliable connection, you should find someone else's tracker and
+use that. Otherwise, follow the rest of this step.
+
+Trackers refer downloaders to each other. The load on the tracker
+is very small, so you only need one for all your files.
+
+To run a tracker, execute the command bittorrent-tracker.py Here is an
+example -
+
+./bittorrent-tracker.py --port 6969 --dfile dstate
+
+--dfile is where persistent information is kept on the tracker across
+invocations. It makes everything start working again immediately if
+you restart the tracker. A new one will be created if it doesn't exist
+already.
+
+The tracker must be on a net-addressable box, and you must know the
+ip number or dns name of it.
+
+The tracker outputs web logs to standard out. You can get information
+about the files it's currently serving by getting its index page.
+
+2) create a torrent file using maketorrent.py (GUI) or
+maketorrent-console.py. The GUI version, maketorrent.py is preferred.
+
+To generate a torrent file using maketorrent-console.py and give it the file
+you want a torrent for and the url of the tracker
+
+./maketorrent-console.py myfile.ext http://my.tracker:6969/announce
+
+This will generate a file called myfile.ext.torrent
+
+Make sure to include the port number in the tracker url if it isn't 80.
+
+(You may also use maketorrent.py to create trackerless torrents. See
+the file TRACKERLESS.txt for information about trackerless operation.)
+
+This command may take a while to scan over the whole file hashing it.
+
+The /announce path is special and hard-coded into the tracker.
+Make sure to give the domain or ip your tracker is on instead of
+my.tracker.
+
+You can use either a dns name or an IP address in the tracker url.
+
+3) associate .torrent with application/x-bittorrent on your web server
+
+The way you do this is dependent on the particular web server you're using.
+
+You must have a web server which can serve ordinary static files and is
+addressable from the internet at large.
+
+4) put the newly made .torrent file on your web server
+
+Note that the file name you choose on the server must end in .torrent, so
+it gets associated with the right mimetype.
+
+5) put up a static page which links to the location you uploaded to in step 4
+
+The file you uploaded in step 4 is linked to using an ordinary url.
+
+6) start a downloader as a resume on the complete file
+
+You have to run a downloader which already has the complete file,
+so new downloaders have a place to get it from. Here's an example -
+
+./bittorrent-console.py --url http://my.server/myfile.torrent --saveas myfile.ext
+
+Make sure the saveas argument points to the already complete file.
+
+If you're running the complete downloader on the same machine or LAN as
+the tracker, give a --ip parameter to the complete downloader. The --ip
+parameter can be either an IP address or DNS name.
+
+BitTorrent defaults to port 6881. If it can't use 6881, (probably because
+another download is happening) it tries 6882, then 6883, etc. It gives up
+after 6889.
+
+7) you're done!
+
+Now you just have to get people downloading! Refer them to the page you
+created in step 5.
+
+BitTorrent can also publish whole directories - simply point
+btmaketorrent.py at the directory with files in it, they'll be
+published as one unit. All files in subdirectories will be included,
+although files and directories named 'CVS', 'core', 'Thumbs.db',
+'desktop.ini' and beginning with a dot ('.') are ignored.
+
+
+Instructions for installation:
+==============================
+
+Instructions for Unix installation are in INSTALL.unix.txt
+
+Instructions for Windows installation and creating Windows installers
+are in BUILD.windows.txt
diff --git a/TRACKERLESS.txt b/TRACKERLESS.txt
new file mode 100644
index 0000000..6d33218
--- /dev/null
+++ b/TRACKERLESS.txt
@@ -0,0 +1,47 @@
+As of version 4.1.0, BitTorrent now includes "trackerless" operation.
+While it is called trackerless, in practice it makes every client a
+lightweight tracker. A clever protocol allows clients to efficiently
+store and retrieve ip-address/port information for torrents.
+
+When generating a torrent, you can choose to utilize the trackerless
+system or a traditional dedicated tracker. A dedicated tracker allows
+you to collect statistics about downloads and gives you a measure of
+control over the reliability of downloads. The trackerless system
+makes no guarantees to reliability but requires no resources of the
+publisher. The trackerless system is not consulted when downloading a
+traditionally tracked torrent.
+
+The trackerless protocol runs over UDP. If you are forwarding a TCP
+port on your firewall to enhance BitTorrent operation you should also
+forward the same UDP port. Many NAT devices, including wireless
+access points and DSL routers, automatically forward UDP ports. Even
+if your particular arrangement doesn't allow for reliable service to
+others in the trackerless protocol, your client should still be able
+use the system to find peers.
+
+Each client in the trackerless system maintains a routing table of
+some of the other clients in the system. No client has a complete
+directory of every other client in the system, it is distributed among
+all clients. To find another client, an iterative protocol is used to
+find closer and closer clients, until the desired one is found.
+Before this process can be started, the routing table must contain at
+least one valid entry. Clients acquire the contact information of
+other clients during the course of normal use, but a newly installed
+client has no contacts and no way of entering the network.
+
+There are two ways a newly installed client obtains contacts for the
+trackerless system. The first is through tracked torrents. When
+connected to another BitTorrent client that supports the trackerless
+system, the peers will exchange contact information for the
+trackerless system. The other way to get bootstrapped into the
+trackerless system is by using contact information stored in
+trackerless torrent files. When you create a trackerless torrent,
+contact information from your routing table is automatically included
+to help newly installed clients with no contacts. An alternative is
+to include the contact information of known stable clients or special
+"routing" clients. A routing client doesn't provide torrent tracking
+service, it only provides contact information. When specifying the
+contact information for a trackerless torrent, separate the IP address
+and port with a colon and separate contacts with a comma
+i.e. "router.bittorrent.com:6881, 127.0.0.1:8080"
+
diff --git a/bittorrent b/bittorrent
new file mode 120000
index 0000000..7ca3c4e
--- /dev/null
+++ b/bittorrent
@@ -0,0 +1 @@
+bittorrent.py \ No newline at end of file
diff --git a/bittorrent-console b/bittorrent-console
new file mode 120000
index 0000000..054110d
--- /dev/null
+++ b/bittorrent-console
@@ -0,0 +1 @@
+bittorrent-console.py \ No newline at end of file
diff --git a/bittorrent-console.py b/bittorrent-console.py
new file mode 100755
index 0000000..e5ec115
--- /dev/null
+++ b/bittorrent-console.py
@@ -0,0 +1,308 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Uoti Urpala and John Hoffman
+
+from __future__ import division
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+import sys
+import os
+import threading
+from time import time, strftime
+from cStringIO import StringIO
+
+from BitTorrent.download import Feedback, Multitorrent
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.parseargs import printHelp
+from BitTorrent.zurllib import urlopen
+from BitTorrent.bencode import bdecode
+from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
+from BitTorrent.prefs import Preferences
+from BitTorrent import configfile
+from BitTorrent import BTFailure
+from BitTorrent import version
+from BitTorrent import GetTorrent
+
+
+def fmttime(n):
+ if n == 0:
+ return _("download complete!")
+ try:
+ n = int(n)
+ assert n >= 0 and n < 5184000 # 60 days
+ except:
+ return _("<unknown>")
+ m, s = divmod(n, 60)
+ h, m = divmod(m, 60)
+ return _("finishing in %d:%02d:%02d") % (h, m, s)
+
+def fmtsize(n):
+ s = str(n)
+ size = s[-3:]
+ while len(s) > 3:
+ s = s[:-3]
+ size = '%s,%s' % (s[-3:], size)
+ if n > 999:
+ unit = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
+ i = 1
+ while i + 1 < len(unit) and (n >> 10) >= 999:
+ i += 1
+ n >>= 10
+ n /= (1 << 10)
+ size = '%s (%.0f %s)' % (size, n, unit[i])
+ return size
+
+
+class HeadlessDisplayer(object):
+
+ def __init__(self, doneflag):
+ self.doneflag = doneflag
+
+ self.done = False
+ self.percentDone = ''
+ self.timeEst = ''
+ self.downRate = '---'
+ self.upRate = '---'
+ self.shareRating = ''
+ self.seedStatus = ''
+ self.peerStatus = ''
+ self.errors = []
+ self.file = ''
+ self.downloadTo = ''
+ self.fileSize = ''
+ self.numpieces = 0
+
+ def set_torrent_values(self, name, path, size, numpieces):
+ self.file = name
+ self.downloadTo = path
+ self.fileSize = fmtsize(size)
+ self.numpieces = numpieces
+
+ def finished(self):
+ self.done = True
+ self.downRate = '---'
+ self.display({'activity':_("download succeeded"), 'fractionDone':1})
+
+ def error(self, errormsg):
+ newerrmsg = strftime('[%H:%M:%S] ') + errormsg
+ self.errors.append(newerrmsg)
+ self.display({})
+
+ def display(self, statistics):
+ fractionDone = statistics.get('fractionDone')
+ activity = statistics.get('activity')
+ timeEst = statistics.get('timeEst')
+ downRate = statistics.get('downRate')
+ upRate = statistics.get('upRate')
+ spew = statistics.get('spew')
+
+ print '\n\n\n\n'
+ if spew is not None:
+ self.print_spew(spew)
+
+ if timeEst is not None:
+ self.timeEst = fmttime(timeEst)
+ elif activity is not None:
+ self.timeEst = activity
+
+ if fractionDone is not None:
+ self.percentDone = str(int(fractionDone * 1000) / 10)
+ if downRate is not None:
+ self.downRate = '%.1f KB/s' % (downRate / (1 << 10))
+ if upRate is not None:
+ self.upRate = '%.1f KB/s' % (upRate / (1 << 10))
+ downTotal = statistics.get('downTotal')
+ if downTotal is not None:
+ upTotal = statistics['upTotal']
+ if downTotal <= upTotal / 100:
+ self.shareRating = _("oo (%.1f MB up / %.1f MB down)") % (
+ upTotal / (1<<20), downTotal / (1<<20))
+ else:
+ self.shareRating = _("%.3f (%.1f MB up / %.1f MB down)") % (
+ upTotal / downTotal, upTotal / (1<<20), downTotal / (1<<20))
+ numCopies = statistics['numCopies']
+ nextCopies = ', '.join(["%d:%.1f%%" % (a,int(b*1000)/10) for a,b in
+ zip(xrange(numCopies+1, 1000), statistics['numCopyList'])])
+ if not self.done:
+ self.seedStatus = _("%d seen now, plus %d distributed copies "
+ "(%s)") % (statistics['numSeeds' ],
+ statistics['numCopies'],
+ nextCopies)
+ else:
+ self.seedStatus = _("%d distributed copies (next: %s)") % (
+ statistics['numCopies'], nextCopies)
+ self.peerStatus = _("%d seen now") % statistics['numPeers']
+
+ for err in self.errors[-4:]:
+ print _("ERROR:\n") + err + '\n'
+ print _("saving: "), self.file
+ print _("file size: "), self.fileSize
+ print _("percent done: "), self.percentDone
+ print _("time left: "), self.timeEst
+ print _("download to: "), self.downloadTo
+ print _("download rate: "), self.downRate
+ print _("upload rate: "), self.upRate
+ print _("share rating: "), self.shareRating
+ print _("seed status: "), self.seedStatus
+ print _("peer status: "), self.peerStatus
+
+ def print_spew(self, spew):
+ s = StringIO()
+ s.write('\n\n\n')
+ for c in spew:
+ s.write('%20s ' % c['ip'])
+ if c['initiation'] == 'L':
+ s.write('l')
+ else:
+ s.write('r')
+ total, rate, interested, choked = c['upload']
+ s.write(' %10s %10s ' % (str(int(total/10485.76)/100),
+ str(int(rate))))
+ if c['is_optimistic_unchoke']:
+ s.write('*')
+ else:
+ s.write(' ')
+ if interested:
+ s.write('i')
+ else:
+ s.write(' ')
+ if choked:
+ s.write('c')
+ else:
+ s.write(' ')
+
+ total, rate, interested, choked, snubbed = c['download']
+ s.write(' %10s %10s ' % (str(int(total/10485.76)/100),
+ str(int(rate))))
+ if interested:
+ s.write('i')
+ else:
+ s.write(' ')
+ if choked:
+ s.write('c')
+ else:
+ s.write(' ')
+ if snubbed:
+ s.write('s')
+ else:
+ s.write(' ')
+ s.write('\n')
+ print s.getvalue()
+
+
+class DL(Feedback):
+
+ def __init__(self, metainfo, config):
+ self.doneflag = threading.Event()
+ self.metainfo = metainfo
+ self.config = Preferences().initWithDict(config)
+
+ def run(self):
+ self.d = HeadlessDisplayer(self.doneflag)
+ try:
+ self.multitorrent = Multitorrent(self.config, self.doneflag,
+ self.global_error)
+ # raises BTFailure if bad
+ metainfo = ConvertedMetainfo(bdecode(self.metainfo))
+ torrent_name = metainfo.name_fs
+ if config['save_as']:
+ if config['save_in']:
+ raise BTFailure(_("You cannot specify both --save_as and "
+ "--save_in"))
+ saveas = config['save_as']
+ elif config['save_in']:
+ saveas = os.path.join(config['save_in'], torrent_name)
+ else:
+ saveas = torrent_name
+
+ self.d.set_torrent_values(metainfo.name, os.path.abspath(saveas),
+ metainfo.total_bytes, len(metainfo.hashes))
+ self.torrent = self.multitorrent.start_torrent(metainfo,
+ Preferences(self.config), self, saveas)
+ except BTFailure, e:
+ print str(e)
+ return
+ self.get_status()
+ self.multitorrent.rawserver.install_sigint_handler()
+ self.multitorrent.rawserver.listen_forever()
+ self.d.display({'activity':_("shutting down"), 'fractionDone':0})
+ self.torrent.shutdown()
+
+ def reread_config(self):
+ try:
+ newvalues = configfile.get_config(self.config, 'bittorrent-console')
+ except Exception, e:
+ self.d.error(_("Error reading config: ") + str(e))
+ return
+ self.config.update(newvalues)
+ # The set_option call can potentially trigger something that kills
+ # the torrent (when writing this the only possibility is a change in
+ # max_files_open causing an IOError while closing files), and so
+ # the self.failed() callback can run during this loop.
+ for option, value in newvalues.iteritems():
+ self.multitorrent.set_option(option, value)
+ for option, value in newvalues.iteritems():
+ self.torrent.set_option(option, value)
+
+ def get_status(self):
+ self.multitorrent.rawserver.add_task(self.get_status,
+ self.config['display_interval'])
+ status = self.torrent.get_status(self.config['spew'])
+ self.d.display(status)
+
+ def global_error(self, level, text):
+ self.d.error(text)
+
+ def error(self, torrent, level, text):
+ self.d.error(text)
+
+ def failed(self, torrent, is_external):
+ self.doneflag.set()
+
+ def finished(self, torrent):
+ self.d.finished()
+
+
+if __name__ == '__main__':
+ uiname = 'bittorrent-console'
+ defaults = get_defaults(uiname)
+
+ metainfo = None
+ if len(sys.argv) <= 1:
+ printHelp(uiname, defaults)
+ sys.exit(1)
+ try:
+ config, args = configfile.parse_configuration_and_args(defaults,
+ uiname, sys.argv[1:], 0, 1)
+
+ torrentfile = None
+ if len(args):
+ torrentfile = args[0]
+ for opt in ('responsefile', 'url'):
+ if config[opt]:
+ print '"--%s"' % opt, _("deprecated, do not use")
+ torrentfile = config[opt]
+ if torrentfile is not None:
+ metainfo, errors = GetTorrent.get(torrentfile)
+ if errors:
+ raise BTFailure(_("Error reading .torrent file: ") + '\n'.join(errors))
+ else:
+ raise BTFailure(_("you must specify a .torrent file"))
+ except BTFailure, e:
+ print str(e)
+ sys.exit(1)
+
+ dl = DL(metainfo, config)
+ dl.run()
diff --git a/bittorrent-curses b/bittorrent-curses
new file mode 120000
index 0000000..e6ea9be
--- /dev/null
+++ b/bittorrent-curses
@@ -0,0 +1 @@
+bittorrent-curses.py \ No newline at end of file
diff --git a/bittorrent-curses.py b/bittorrent-curses.py
new file mode 100755
index 0000000..a4dc9a3
--- /dev/null
+++ b/bittorrent-curses.py
@@ -0,0 +1,450 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Original version written by Henry 'Pi' James, modified by (at least)
+# John Hoffman and Uoti Urpala
+
+from __future__ import division
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+SPEW_SCROLL_RATE = 1
+
+import sys
+import os
+import threading
+from time import time, strftime
+
+from BitTorrent.download import Feedback, Multitorrent
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.parseargs import printHelp
+from BitTorrent.zurllib import urlopen
+from BitTorrent.bencode import bdecode
+from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
+from BitTorrent.prefs import Preferences
+from BitTorrent.obsoletepythonsupport import import_curses
+from BitTorrent import configfile
+from BitTorrent import BTFailure
+from BitTorrent import version
+from BitTorrent import GetTorrent
+
+
+try:
+ curses = import_curses()
+ import curses.panel
+ from curses.wrapper import wrapper as curses_wrapper
+ from signal import signal, SIGWINCH
+except:
+ print _("Textmode GUI initialization failed, cannot proceed.")
+ print
+ print _("This download interface requires the standard Python module "
+ "\"curses\", which is unfortunately not available for the native "
+ "Windows port of Python. It is however available for the Cygwin "
+ "port of Python, running on all Win32 systems (www.cygwin.com).")
+ print
+ print _('You may still use "bittorrent-console" to download.')
+ sys.exit(1)
+
+def fmttime(n):
+ if n == 0:
+ return _("download complete!")
+ try:
+ n = int(n)
+ assert n >= 0 and n < 5184000 # 60 days
+ except:
+ return _("<unknown>")
+ m, s = divmod(n, 60)
+ h, m = divmod(m, 60)
+ return _("finishing in %d:%02d:%02d") % (h, m, s)
+
+def fmtsize(n):
+ s = str(n)
+ size = s[-3:]
+ while len(s) > 3:
+ s = s[:-3]
+ size = '%s,%s' % (s[-3:], size)
+ if n > 999:
+ unit = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
+ i = 1
+ while i + 1 < len(unit) and (n >> 10) >= 999:
+ i += 1
+ n >>= 10
+ n /= (1 << 10)
+ size = '%s (%.0f %s)' % (size, n, unit[i])
+ return size
+
+
+class CursesDisplayer(object):
+
+ def __init__(self, scrwin, errlist, doneflag, reread_config, ulrate):
+ self.scrwin = scrwin
+ self.errlist = errlist
+ self.doneflag = doneflag
+
+ signal(SIGWINCH, self.winch_handler)
+ self.changeflag = threading.Event()
+
+ self.done = False
+ self.reread_config = reread_config
+ self.ulrate = ulrate
+ self.activity = ''
+ self.status = ''
+ self.progress = ''
+ self.downRate = '---'
+ self.upRate = '---'
+ self.shareRating = ''
+ self.seedStatus = ''
+ self.peerStatus = ''
+ self.errors = []
+ self.file = ''
+ self.downloadTo = ''
+ self.fileSize = ''
+ self.numpieces = 0
+ self.spew_scroll_time = 0
+ self.spew_scroll_pos = 0
+
+ self._remake_window()
+ curses.use_default_colors()
+
+ def set_torrent_values(self, name, path, size, numpieces):
+ self.file = name
+ self.downloadTo = path
+ self.fileSize = fmtsize(size)
+ self.numpieces = numpieces
+ self._remake_window()
+
+ def winch_handler(self, signum, stackframe):
+ self.changeflag.set()
+ curses.endwin()
+ self.scrwin.refresh()
+ self.scrwin = curses.newwin(0, 0, 0, 0)
+ self._remake_window()
+
+ def _remake_window(self):
+ self.scrh, self.scrw = self.scrwin.getmaxyx()
+ self.scrpan = curses.panel.new_panel(self.scrwin)
+ self.labelh, self.labelw, self.labely, self.labelx = 11, 9, 1, 2
+ self.labelwin = curses.newwin(self.labelh, self.labelw,
+ self.labely, self.labelx)
+ self.labelpan = curses.panel.new_panel(self.labelwin)
+ self.fieldh, self.fieldw, self.fieldy, self.fieldx = (
+ self.labelh, self.scrw-2 - self.labelw-3,
+ 1, self.labelw+3)
+ self.fieldwin = curses.newwin(self.fieldh, self.fieldw,
+ self.fieldy, self.fieldx)
+ self.fieldwin.nodelay(1)
+ self.fieldpan = curses.panel.new_panel(self.fieldwin)
+ self.spewh, self.speww, self.spewy, self.spewx = (
+ self.scrh - self.labelh - 2, self.scrw - 3, 1 + self.labelh, 2)
+ self.spewwin = curses.newwin(self.spewh, self.speww,
+ self.spewy, self.spewx)
+ self.spewpan = curses.panel.new_panel(self.spewwin)
+ try:
+ self.scrwin.border(ord('|'),ord('|'),ord('-'),ord('-'),ord(' '),ord(' '),ord(' '),ord(' '))
+ except:
+ pass
+ self.labelwin.addstr(0, 0, _("file:"))
+ self.labelwin.addstr(1, 0, _("size:"))
+ self.labelwin.addstr(2, 0, _("dest:"))
+ self.labelwin.addstr(3, 0, _("progress:"))
+ self.labelwin.addstr(4, 0, _("status:"))
+ self.labelwin.addstr(5, 0, _("dl speed:"))
+ self.labelwin.addstr(6, 0, _("ul speed:"))
+ self.labelwin.addstr(7, 0, _("sharing:"))
+ self.labelwin.addstr(8, 0, _("seeds:"))
+ self.labelwin.addstr(9, 0, _("peers:"))
+ curses.panel.update_panels()
+ curses.doupdate()
+ self.changeflag.clear()
+
+
+ def finished(self):
+ self.done = True
+ self.downRate = '---'
+ self.display({'activity':_("download succeeded"), 'fractionDone':1})
+
+ def error(self, errormsg):
+ newerrmsg = strftime('[%H:%M:%S] ') + errormsg
+ self.errors.append(newerrmsg.split('\n')[0])
+ self.errlist.append(newerrmsg)
+ self.display({})
+
+ def display(self, statistics):
+ fractionDone = statistics.get('fractionDone')
+ activity = statistics.get('activity')
+ timeEst = statistics.get('timeEst')
+ downRate = statistics.get('downRate')
+ upRate = statistics.get('upRate')
+ spew = statistics.get('spew')
+
+ inchar = self.fieldwin.getch()
+ if inchar == 12: # ^L
+ self._remake_window()
+ elif inchar in (ord('q'),ord('Q')):
+ self.doneflag.set()
+ elif inchar in (ord('r'),ord('R')):
+ self.reread_config()
+ elif inchar in (ord('u'),ord('U')):
+ curses.echo()
+ self.fieldwin.nodelay(0)
+ s = self.fieldwin.getstr(6,10)
+ curses.noecho()
+ self.fieldwin.nodelay(1)
+ r = None
+ try:
+ r = int(s)
+ except ValueError:
+ pass
+ if r is not None:
+ self.ulrate(r)
+
+ if timeEst is not None:
+ self.activity = fmttime(timeEst)
+ elif activity is not None:
+ self.activity = activity
+ if self.changeflag.isSet():
+ return
+
+ if fractionDone is not None:
+ blocknum = int(self.fieldw * fractionDone)
+ self.progress = blocknum * '#' + (self.fieldw - blocknum) * '_'
+ self.status = '%s (%.1f%%)' % (self.activity, fractionDone * 100)
+
+ if downRate is not None:
+ self.downRate = '%.1f KB/s' % (downRate / (1 << 10))
+ if upRate is not None:
+ self.upRate = '%.1f KB/s' % (upRate / (1 << 10))
+ downTotal = statistics.get('downTotal')
+ if downTotal is not None:
+ upTotal = statistics['upTotal']
+ if downTotal <= upTotal / 100:
+ self.shareRating = _("oo (%.1f MB up / %.1f MB down)") % (
+ upTotal / (1<<20), downTotal / (1<<20))
+ else:
+ self.shareRating = _("%.3f (%.1f MB up / %.1f MB down)") % (
+ upTotal / downTotal, upTotal / (1<<20), downTotal / (1<<20))
+ numCopies = statistics['numCopies']
+ nextCopies = ', '.join(["%d:%.1f%%" % (a,int(b*1000)/10) for a,b in
+ zip(xrange(numCopies+1, 1000), statistics['numCopyList'])])
+ if not self.done:
+ self.seedStatus = _("%d seen now, plus %d distributed copies"
+ "(%s)") % (statistics['numSeeds' ],
+ statistics['numCopies'],
+ nextCopies)
+ else:
+ self.seedStatus = _("%d distributed copies (next: %s)") % (
+ statistics['numCopies'], nextCopies)
+ self.peerStatus = _("%d seen now") % statistics['numPeers']
+
+ self.fieldwin.erase()
+ self.fieldwin.addnstr(0, 0, self.file, self.fieldw, curses.A_BOLD)
+ self.fieldwin.addnstr(1, 0, self.fileSize, self.fieldw)
+ self.fieldwin.addnstr(2, 0, self.downloadTo, self.fieldw)
+ if self.progress:
+ self.fieldwin.addnstr(3, 0, self.progress, self.fieldw, curses.A_BOLD)
+ self.fieldwin.addnstr(4, 0, self.status, self.fieldw)
+ self.fieldwin.addnstr(5, 0, self.downRate, self.fieldw)
+ self.fieldwin.addnstr(6, 0, self.upRate, self.fieldw)
+ self.fieldwin.addnstr(7, 0, self.shareRating, self.fieldw)
+ self.fieldwin.addnstr(8, 0, self.seedStatus, self.fieldw)
+ self.fieldwin.addnstr(9, 0, self.peerStatus, self.fieldw)
+
+ self.spewwin.erase()
+
+ if not spew:
+ errsize = self.spewh
+ if self.errors:
+ self.spewwin.addnstr(0, 0, _("error(s):"), self.speww, curses.A_BOLD)
+ errsize = len(self.errors)
+ displaysize = min(errsize, self.spewh)
+ displaytop = errsize - displaysize
+ for i in range(displaysize):
+ self.spewwin.addnstr(i, self.labelw, self.errors[displaytop + i],
+ self.speww-self.labelw-1, curses.A_BOLD)
+ else:
+ if self.errors:
+ self.spewwin.addnstr(0, 0, _("error:"), self.speww, curses.A_BOLD)
+ self.spewwin.addnstr(0, self.labelw, self.errors[-1],
+ self.speww-self.labelw-1, curses.A_BOLD)
+ self.spewwin.addnstr(2, 0, _(" # IP Upload Download Completed Speed"), self.speww, curses.A_BOLD)
+
+
+ if self.spew_scroll_time + SPEW_SCROLL_RATE < time():
+ self.spew_scroll_time = time()
+ if len(spew) > self.spewh-5 or self.spew_scroll_pos > 0:
+ self.spew_scroll_pos += 1
+ if self.spew_scroll_pos > len(spew):
+ self.spew_scroll_pos = 0
+
+ for i in range(len(spew)):
+ spew[i]['lineno'] = i+1
+ spew.append({'lineno': None})
+ spew = spew[self.spew_scroll_pos:] + spew[:self.spew_scroll_pos]
+
+ for i in range(min(self.spewh - 5, len(spew))):
+ if not spew[i]['lineno']:
+ continue
+ self.spewwin.addnstr(i+3, 0, '%3d' % spew[i]['lineno'], 3)
+ self.spewwin.addnstr(i+3, 4, spew[i]['ip'], 15)
+ ul = spew[i]['upload']
+ if ul[1] > 100:
+ self.spewwin.addnstr(i+3, 20, '%6.0f KB/s' % (
+ ul[1] / 1000), 11)
+ self.spewwin.addnstr(i+3, 32, '-----', 5)
+ if ul[2]:
+ self.spewwin.addnstr(i+3, 33, 'I', 1)
+ if ul[3]:
+ self.spewwin.addnstr(i+3, 35, 'C', 1)
+ dl = spew[i]['download']
+ if dl[1] > 100:
+ self.spewwin.addnstr(i+3, 38, '%6.0f KB/s' % (
+ dl[1] / 1000), 11)
+ self.spewwin.addnstr(i+3, 50, '-------', 7)
+ if dl[2]:
+ self.spewwin.addnstr(i+3, 51, 'I', 1)
+ if dl[3]:
+ self.spewwin.addnstr(i+3, 53, 'C', 1)
+ if dl[4]:
+ self.spewwin.addnstr(i+3, 55, 'S', 1)
+ self.spewwin.addnstr(i+3, 58, '%5.1f%%' % (int(spew[i]['completed']*1000)/10), 6)
+ if spew[i]['speed'] is not None:
+ self.spewwin.addnstr(i+3, 64, '%5.0f KB/s' % (spew[i]['speed']/1000), 10)
+
+ self.spewwin.addnstr(self.spewh-1, 0,
+ _("downloading %d pieces, have %d fragments, "
+ "%d of %d pieces completed") %
+ (statistics['storage_active'], statistics['storage_dirty'],
+ statistics['storage_numcomplete'], self.numpieces),
+ self.speww-1)
+
+ curses.panel.update_panels()
+ curses.doupdate()
+
+
+class DL(Feedback):
+
+ def __init__(self, metainfo, config, errlist):
+ self.doneflag = threading.Event()
+ self.metainfo = metainfo
+ self.config = Preferences().initWithDict(config)
+ self.errlist = errlist
+
+ def run(self, scrwin):
+ def reread():
+ self.multitorrent.rawserver.external_add_task(self.reread_config,0)
+ def ulrate(value):
+ self.multitorrent.set_option('max_upload_rate', value)
+ self.torrent.set_option('max_upload_rate', value)
+
+ self.d = CursesDisplayer(scrwin, self.errlist, self.doneflag, reread, ulrate)
+ try:
+ self.multitorrent = Multitorrent(self.config, self.doneflag,
+ self.global_error)
+ # raises BTFailure if bad
+ metainfo = ConvertedMetainfo(bdecode(self.metainfo))
+ torrent_name = metainfo.name_fs
+ if config['save_as']:
+ if config['save_in']:
+ raise BTFailure(_("You cannot specify both --save_as and "
+ "--save_in"))
+ saveas = config['save_as']
+ elif config['save_in']:
+ saveas = os.path.join(config['save_in'], torrent_name)
+ else:
+ saveas = torrent_name
+
+ self.d.set_torrent_values(metainfo.name, os.path.abspath(saveas),
+ metainfo.total_bytes, len(metainfo.hashes))
+ self.torrent = self.multitorrent.start_torrent(metainfo,
+ Preferences(self.config), self, saveas)
+ except BTFailure, e:
+ errlist.append(str(e))
+ return
+ self.get_status()
+ self.multitorrent.rawserver.install_sigint_handler()
+ self.multitorrent.rawserver.listen_forever()
+ self.d.display({'activity':_("shutting down"), 'fractionDone':0})
+ self.torrent.shutdown()
+
+ def reread_config(self):
+ try:
+ newvalues = configfile.get_config(self.config, 'bittorrent-curses')
+ except Exception, e:
+ self.d.error(_("Error reading config: ") + str(e))
+ return
+ self.config.update(newvalues)
+ # The set_option call can potentially trigger something that kills
+ # the torrent (when writing this the only possibility is a change in
+ # max_files_open causing an IOError while closing files), and so
+ # the self.failed() callback can run during this loop.
+ for option, value in newvalues.iteritems():
+ self.multitorrent.set_option(option, value)
+ for option, value in newvalues.iteritems():
+ self.torrent.set_option(option, value)
+
+ def get_status(self):
+ self.multitorrent.rawserver.add_task(self.get_status,
+ self.config['display_interval'])
+ status = self.torrent.get_status(self.config['spew'])
+ self.d.display(status)
+
+ def global_error(self, level, text):
+ self.d.error(text)
+
+ def error(self, torrent, level, text):
+ self.d.error(text)
+
+ def failed(self, torrent, is_external):
+ self.doneflag.set()
+
+ def finished(self, torrent):
+ self.d.finished()
+
+
+if __name__ == '__main__':
+ uiname = 'bittorrent-curses'
+ defaults = get_defaults(uiname)
+
+ metainfo = None
+ if len(sys.argv) <= 1:
+ printHelp(uiname, defaults)
+ sys.exit(1)
+ try:
+ config, args = configfile.parse_configuration_and_args(defaults,
+ uiname, sys.argv[1:], 0, 1)
+
+ torrentfile = None
+ if len(args):
+ torrentfile = args[0]
+ for opt in ('responsefile', 'url'):
+ if config[opt]:
+ print '"--%s"' % opt, _("deprecated, do not use")
+ torrentfile = config[opt]
+ if torrentfile is not None:
+ metainfo, errors = GetTorrent.get(torrentfile)
+ if errors:
+ raise BTFailure(_("Error reading .torrent file: ") + '\n'.join(errors))
+ else:
+ raise BTFailure(_("you must specify a .torrent file"))
+ except BTFailure, e:
+ print str(e)
+ sys.exit(1)
+
+ errlist = []
+ dl = DL(metainfo, config, errlist)
+ curses_wrapper(dl.run)
+
+ if errlist:
+ print _("These errors occurred during execution:")
+ for error in errlist:
+ print error
diff --git a/bittorrent-tracker b/bittorrent-tracker
new file mode 120000
index 0000000..c6ade35
--- /dev/null
+++ b/bittorrent-tracker
@@ -0,0 +1 @@
+bittorrent-tracker.py \ No newline at end of file
diff --git a/bittorrent-tracker.py b/bittorrent-tracker.py
new file mode 100755
index 0000000..52dace4
--- /dev/null
+++ b/bittorrent-tracker.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+if __name__ == '__main__':
+ from BitTorrent.platform import install_translation
+ install_translation()
+
+import os
+from sys import argv
+from BitTorrent.track import track
+
+if __name__ == '__main__':
+ track(argv[1:])
diff --git a/bittorrent.py b/bittorrent.py
new file mode 100755
index 0000000..548f922
--- /dev/null
+++ b/bittorrent.py
@@ -0,0 +1,3834 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Uoti Urpala and Matt Chisholm
+
+from __future__ import division
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+import sys
+import itertools
+import math
+import os
+import threading
+import datetime
+import random
+import atexit
+
+assert sys.version_info >= (2, 3), _("Install Python %s or greater") % '2.3'
+
+from BitTorrent import BTFailure, INFO, WARNING, ERROR, CRITICAL, status_dict, app_name
+
+from BitTorrent import configfile
+
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.IPC import ipc_interface
+from BitTorrent.prefs import Preferences
+from BitTorrent.platform import doc_root, btspawn, path_wrap, os_version, is_frozen_exe, get_startup_dir, create_shortcut, remove_shortcut
+from BitTorrent import zurllib
+
+defaults = get_defaults('bittorrent')
+defaults.extend((('donated' , '', ''), # the version that the user last donated for
+ ('notified', '', ''), # the version that the user was last notified of
+ ))
+
+
+ui_options = [
+ 'max_upload_rate' ,
+ 'minport' ,
+ 'maxport' ,
+ 'next_torrent_time' ,
+ 'next_torrent_ratio' ,
+ 'last_torrent_ratio' ,
+ 'seed_forever' ,
+ 'seed_last_forever' ,
+ 'ask_for_save' ,
+ 'save_in' ,
+ 'open_from' ,
+ 'ip' ,
+ 'start_torrent_behavior',
+ 'upnp' ,
+ ]
+
+if os.name == 'nt':
+ ui_options.extend( [
+ 'launch_on_startup' ,
+ 'minimize_to_tray' ,
+ ])
+
+advanced_ui_options_index = len(ui_options)
+
+ui_options.extend([
+ 'min_uploads' ,
+ 'max_uploads' ,
+ 'max_initiate' ,
+ 'max_incomplete' ,
+ 'max_allow_in' ,
+ 'max_files_open' ,
+ 'forwarded_port' ,
+ 'display_interval',
+ 'donated' ,
+ 'notified' ,
+ ])
+
+
+if is_frozen_exe:
+ ui_options.append('progressbar_hack')
+ defproghack = 0
+ if os_version == 'XP':
+ # turn on progress bar hack by default for Win XP
+ defproghack = 1
+ defaults.extend((('progressbar_hack' , defproghack, ''),))
+
+
+NAG_FREQUENCY = 3
+PORT_RANGE = 5
+
+defconfig = dict([(name, value) for (name, value, doc) in defaults])
+del name, value, doc
+
+def btgui_exit(ipc):
+ ipc.stop()
+
+class global_logger(object):
+ def __init__(self, logger = None):
+ self.logger = logger
+ def __call__(self, severity, msg):
+ if self.logger:
+ self.logger(severity, msg)
+ else:
+ sys.stderr.write("%s: %s\n" % (status_dict[severity], msg))
+
+# if it's application global, why do we pass a reference to it everywhere?
+global_log_func = global_logger()
+
+if __name__ == '__main__':
+ zurllib.add_unsafe_thread()
+
+ try:
+ config, args = configfile.parse_configuration_and_args(defaults,
+ 'bittorrent', sys.argv[1:], 0, None)
+ except BTFailure, e:
+ print str(e)
+ sys.exit(1)
+
+ config = Preferences().initWithDict(config)
+ advanced_ui = config['advanced']
+
+ newtorrents = args
+ for opt in ('responsefile', 'url'):
+ if config[opt]:
+ print '"--%s"' % opt, _("deprecated, do not use")
+ newtorrents.append(config[opt])
+
+ ipc = ipc_interface(config, global_log_func)
+
+ # this could be on the ipc object
+ ipc_master = True
+ try:
+ ipc.create()
+ except BTFailure:
+ ipc_master = False
+
+ try:
+ ipc.send_command('no-op')
+ except BTFailure:
+ global_log_func(ERROR, _("Failed to communicate with another %s process "
+ "but one seems to be running.") +
+ _(" Closing all %s windows may fix the problem.")
+ % (app_name, app_name))
+ sys.exit(1)
+
+ # make sure we clean up the ipc when we close
+ atexit.register(btgui_exit, ipc)
+
+ # it's not obvious, but 'newtorrents' is carried on to the gui
+ # __main__ if we're the IPC master
+
+ if not ipc_master:
+
+ if newtorrents:
+ # Not sure if anything really useful could be done if
+ # these send_command calls fail
+ for name in newtorrents:
+ ipc.send_command('start_torrent', name, config['save_as'])
+ sys.exit(0)
+
+ try:
+ ipc.send_command('show_error', _("%s already running")%app_name)
+ except BTFailure:
+ global_log_func(ERROR, _("Failed to communicate with another %s process.") +
+ _(" Closing all %s windows may fix the problem.")
+ % app_name)
+ sys.exit(1)
+
+
+import gtk
+import pango
+import gobject
+import webbrowser
+
+assert gtk.pygtk_version >= (2, 6), _("PyGTK %s or newer required") % '2.6'
+
+from BitTorrent import HELP_URL, DONATE_URL, SEARCH_URL, version, branch
+
+from BitTorrent import TorrentQueue
+from BitTorrent import LaunchPath
+from BitTorrent import Desktop
+from BitTorrent import ClientIdentifier
+from BitTorrent import NewVersion
+
+from BitTorrent.parseargs import makeHelp
+from BitTorrent.TorrentQueue import RUNNING, RUN_QUEUED, QUEUED, KNOWN, ASKING_LOCATION
+from BitTorrent.TrayIcon import TrayIcon
+from BitTorrent.StatusLight import GtkStatusLight as StatusLight
+from BitTorrent.GUI import *
+
+
+main_torrent_dnd_tip = _("drag to reorder")
+torrent_menu_tip = _("right-click for menu")
+torrent_tip_format = '%s:\n %s\n %s'
+
+rate_label = ': %s'
+
+speed_classes = {
+ ( 4, 5):_("dialup" ),
+ ( 6, 14):_("DSL/cable 128k up"),
+ ( 15, 29):_("DSL/cable 256k up"),
+ ( 30, 91):_("DSL 768k up" ),
+ ( 92, 137):_("T1" ),
+ ( 138, 182):_("T1/E1" ),
+ ( 183, 249):_("E1" ),
+ ( 250, 5446):_("T3" ),
+ (5447,18871):_("OC3" ),
+ }
+
+def find_dir(path):
+ if os.path.isdir(path):
+ return path
+ directory, garbage = os.path.split(path)
+ while directory:
+ if os.access(directory, os.F_OK) and os.access(directory, os.W_OK):
+ return directory
+ directory, garbage = os.path.split(directory)
+ if garbage == '':
+ break
+ return None
+
+def smart_dir(path):
+ path = find_dir(path)
+ if path is None:
+ path = Desktop.desktop
+ return path
+
+class MenuItem(gtk.MenuItem):
+ def __init__(self, label, accel_group=None, func=None):
+ gtk.MenuItem.__init__(self, label)
+ if func is not None:
+ self.connect("activate", func)
+ else:
+ self.set_sensitive(False)
+
+ if accel_group is not None:
+ label = label.decode('utf-8')
+ accel_index = label.find('_')
+ if -1 < accel_index < len(label) - 1:
+ accel_char = long(ord(label[accel_index+1]))
+ accel_key = gtk.gdk.unicode_to_keyval(accel_char)
+ if accel_key != accel_char | 0x01000000:
+ self.add_accelerator("activate", accel_group, accel_key,
+ gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+ self.show()
+
+
+def build_menu(menu_items, accel_group=None):
+ menu = gtk.Menu()
+ for label,func in menu_items:
+ if label == '----':
+ s = gtk.SeparatorMenuItem()
+ s.show()
+ menu.add(s)
+ else:
+ item = MenuItem(label, accel_group=accel_group, func=func)
+ item.show()
+ menu.add(item)
+ return menu
+
+
+class Validator(gtk.Entry):
+ valid_chars = '1234567890'
+ minimum = None
+ maximum = None
+ cast = int
+
+ def __init__(self, option_name, config, setfunc):
+ gtk.Entry.__init__(self)
+ self.option_name = option_name
+ self.config = config
+ self.setfunc = setfunc
+
+ self.set_text(str(config[option_name]))
+
+ self.set_size_request(self.width,-1)
+
+ self.connect('insert-text', self.text_inserted)
+ self.connect('focus-out-event', self.focus_out)
+
+ def get_value(self):
+ value = None
+ try:
+ value = self.cast(self.get_text())
+ except ValueError:
+ pass
+ return value
+
+ def set_value(self, value):
+ self.set_text(str(value))
+ self.setfunc(self.option_name, value)
+
+ def focus_out(self, entry, widget):
+ value = self.get_value()
+
+ if value is None:
+ return
+
+ if (self.minimum is not None) and (value < self.minimum):
+ value = self.minimum
+ if (self.maximum is not None) and (value > self.maximum):
+ value = self.maximum
+
+ self.set_value(value)
+
+ def text_inserted(self, entry, input, position, user_data):
+ for i in input:
+ if (self.valid_chars is not None) and (i not in self.valid_chars):
+ self.emit_stop_by_name('insert-text')
+ return True
+ return False
+
+class IPValidator(Validator):
+ valid_chars = '1234567890.'
+ width = 128
+ cast = str
+
+class PortValidator(Validator):
+ width = 64
+ minimum = 1024
+ maximum = 65535
+
+ def add_end(self, end_name):
+ self.end_option_name = end_name
+
+ def set_value(self, value):
+ self.set_text(str(value))
+ self.setfunc(self.option_name, value)
+ self.setfunc(self.end_option_name, value+PORT_RANGE)
+
+
+class PercentValidator(Validator):
+ width = 48
+ minimum = 0
+
+class MinutesValidator(Validator):
+ width = 48
+ minimum = 1
+
+class EnterUrlDialog(MessageDialog):
+ flags = gtk.DIALOG_DESTROY_WITH_PARENT
+ def __init__(self, parent):
+ self.entry = gtk.Entry()
+ self.entry.show()
+ self.main = parent
+ MessageDialog.__init__(self, parent.mainwindow,
+ _("Enter torrent URL"),
+ _("Enter the URL of a torrent file to open:"),
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_OK_CANCEL,
+ yesfunc=lambda *args: parent.open_url(self.entry.get_text()),
+ default=gtk.RESPONSE_OK
+ )
+ hbox = gtk.HBox()
+ hbox.pack_start(self.entry, padding=SPACING)
+ hbox.show()
+ self.entry.set_activates_default(True)
+ self.entry.set_flags(gtk.CAN_FOCUS)
+ self.vbox.pack_start(hbox)
+ self.entry.grab_focus()
+
+ def close(self, *args):
+ self.destroy()
+
+ def destroy(self):
+ MessageDialog.destroy(self)
+ self.main.window_closed('enterurl')
+
+
+class RateSliderBox(gtk.VBox):
+ base = 10
+ multiplier = 4
+ max_exponent = 3.3
+
+ def __init__(self, config, torrentqueue):
+ gtk.VBox.__init__(self, homogeneous=False)
+ self.config = config
+ self.torrentqueue = torrentqueue
+
+ if self.config['max_upload_rate'] < self.slider_to_rate(0):
+ self.config['max_upload_rate'] = self.slider_to_rate(0)
+
+ self.speed_classes = {
+ ( 4, 5):_("dialup" ),
+ ( 6, 14):_("DSL/cable 128k up"),
+ ( 15, 29):_("DSL/cable 256k up"),
+ ( 30, 91):_("DSL 768k up" ),
+ ( 92, 137):_("T1" ),
+ ( 138, 182):_("T1/E1" ),
+ ( 183, 249):_("E1" ),
+ ( 250, 5446):_("T3" ),
+ (5447,18871):_("OC3" ),
+ }
+
+ biggest_size = 0
+ for v in self.speed_classes.values():
+ width = gtk.Label(v).size_request()[0]
+ if width > biggest_size:
+ biggest_size = width
+
+ self.rate_slider_label_box = gtk.HBox(spacing=SPACING,
+ homogeneous=True)
+
+ self.rate_slider_label = gtk.Label(_("Maximum upload rate:"))
+ self.rate_slider_label.set_ellipsize(pango.ELLIPSIZE_START)
+ self.rate_slider_label.set_alignment(1, 0.5)
+ self.rate_slider_label_box.pack_start(self.rate_slider_label,
+ expand=True, fill=True)
+
+ self.rate_slider_value = gtk.Label(
+ self.value_to_label(self.config['max_upload_rate']))
+ self.rate_slider_value.set_alignment(0, 0.5)
+ self.rate_slider_value.set_size_request(biggest_size, -1)
+
+ self.rate_slider_label_box.pack_start(self.rate_slider_value,
+ expand=True, fill=True)
+
+ self.rate_slider_adj = gtk.Adjustment(
+ self.rate_to_slider(self.config['max_upload_rate']), 0,
+ self.max_exponent, 0.01, 0.1)
+
+ self.rate_slider = gtk.HScale(self.rate_slider_adj)
+ self.rate_slider.set_draw_value(False)
+ self.rate_slider_adj.connect('value_changed', self.set_max_upload_rate)
+
+ self.pack_start(self.rate_slider , expand=False, fill=False)
+ self.pack_start(self.rate_slider_label_box , expand=False, fill=False)
+
+ if False: # this shows the legend for the slider
+ self.rate_slider_legend = gtk.HBox(homogeneous=True)
+ for i in range(int(self.max_exponent+1)):
+ label = gtk.Label(str(self.slider_to_rate(i)))
+ alabel = halign(label, i/self.max_exponent)
+ self.rate_slider_legend.pack_start(alabel,
+ expand=True, fill=True)
+ self.pack_start(self.rate_slider_legend, expand=False, fill=False)
+
+
+ def start(self):
+ self.set_max_upload_rate(self.rate_slider_adj)
+
+ def rate_to_slider(self, value):
+ return math.log(value/self.multiplier, self.base)
+
+ def slider_to_rate(self, value):
+ return int(round(self.base**value * self.multiplier))
+
+ def value_to_label(self, value):
+ conn_type = ''
+ for key, conn in self.speed_classes.items():
+ min_v, max_v = key
+ if min_v <= value <= max_v:
+ conn_type = ' (%s)'%conn
+ break
+ label = str(Rate(value*1024)) + conn_type
+ return label
+
+ def set_max_upload_rate(self, adj):
+ option = 'max_upload_rate'
+ value = self.slider_to_rate(adj.get_value())
+ self.config[option] = value
+ self.torrentqueue.set_config(option, value)
+ self.rate_slider_value.set_text(self.value_to_label(int(value)))
+
+
+class StopStartButton(gtk.Button):
+ stop_tip = _("Temporarily stop all running torrents")
+ start_tip = _("Resume downloading")
+
+ def __init__(self, main):
+ gtk.Button.__init__(self)
+ self.main = main
+ self.connect('clicked', self.toggle)
+
+ self.stop_image = gtk.Image()
+ self.stop_image.set_from_stock('bt-pause', gtk.ICON_SIZE_BUTTON)
+ self.stop_image.show()
+
+ self.start_image = gtk.Image()
+ self.start_image.set_from_stock('bt-play', gtk.ICON_SIZE_BUTTON)
+ self.start_image.show()
+
+ def toggle(self, widget):
+ self.set_paused(not self.main.config['pause'])
+
+ def set_paused(self, paused):
+ image = self.get_child()
+ if paused:
+ if image == self.stop_image:
+ self.remove(self.stop_image)
+ if image != self.start_image:
+ self.add(self.start_image)
+ self.main.tooltips.set_tip(self, self.start_tip)
+ self.main.stop_queue()
+ else:
+ if image == self.start_image:
+ self.remove(self.start_image)
+ if image != self.stop_image:
+ self.add(self.stop_image)
+ self.main.tooltips.set_tip(self, self.stop_tip )
+ self.main.restart_queue()
+
+
+class VersionWindow(Window):
+ def __init__(self, main, newversion, download_url):
+ Window.__init__(self)
+ self.set_title(_("New %s version available")%app_name)
+ self.set_border_width(SPACING)
+ self.set_resizable(False)
+ self.main = main
+ self.newversion = newversion
+ self.download_url = download_url
+ self.connect('destroy', lambda w: self.main.window_closed('version'))
+ self.vbox = gtk.VBox(spacing=SPACING)
+ self.hbox = gtk.HBox(spacing=SPACING)
+ self.image = gtk.Image()
+ self.image.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG)
+ self.hbox.pack_start(self.image)
+
+ self.label = gtk.Label()
+ self.label.set_markup(
+ (_("A newer version of %s is available.\n") % app_name) +
+ (_("You are using %s, and the new version is %s.\n") % (version, newversion)) +
+ (_("You can always get the latest version from \n%s") % self.download_url)
+ )
+ self.label.set_selectable(True)
+ self.hbox.pack_start(self.label)
+ self.vbox.pack_start(self.hbox)
+ self.bbox = gtk.HBox(spacing=SPACING)
+
+ self.closebutton = gtk.Button(_("Download _later"))
+ self.closebutton.connect('clicked', self.close)
+
+ self.newversionbutton = gtk.Button(_("Download _now"))
+ self.newversionbutton.connect('clicked', self.get_newversion)
+
+ self.bbox.pack_end(self.newversionbutton, expand=False, fill=False)
+ self.bbox.pack_end(self.closebutton , expand=False, fill=False)
+
+ self.checkbox = gtk.CheckButton(_("_Remind me later"))
+ self.checkbox.set_active(True)
+ self.checkbox.connect('toggled', self.remind_toggle)
+
+ self.bbox.pack_start(self.checkbox, expand=False, fill=False)
+
+ self.vbox.pack_start(self.bbox)
+
+ self.add(self.vbox)
+ self.show_all()
+
+ def remind_toggle(self, widget):
+ v = self.checkbox.get_active()
+ notified = ''
+ if v:
+ notified = ''
+ else:
+ notified = self.newversion
+ self.main.set_config('notified', str(notified))
+
+ def close(self, widget):
+ self.destroy()
+
+ def get_newversion(self, widget):
+ if self.main.updater.can_install():
+ if self.main.updater.torrentfile is None:
+ self.main.visit_url(self.download_url)
+ else:
+ self.main.start_auto_update()
+ else:
+ self.main.visit_url(self.download_url)
+ self.destroy()
+
+
+class AboutWindow(object):
+
+ def __init__(self, main, donatefunc):
+ self.win = Window()
+ self.win.set_title(_("About %s")%app_name)
+ self.win.set_size_request(300,400)
+ self.win.set_border_width(SPACING)
+ self.win.set_resizable(False)
+ self.win.connect('destroy', lambda w: main.window_closed('about'))
+ self.scroll = gtk.ScrolledWindow()
+ self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.scroll.set_shadow_type(gtk.SHADOW_IN)
+
+ self.outervbox = gtk.VBox()
+
+ self.outervbox.pack_start(get_logo(96), expand=False, fill=False)
+
+ version_str = version
+ if int(version_str[2]) % 2:
+ version_str = version_str + ' ' + _("Beta")
+
+ self.outervbox.pack_start(gtk.Label(_("Version %s")%version_str), expand=False, fill=False)
+
+ if branch is not None:
+ blabel = gtk.Label('cdv client dir: %s' % branch)
+ self.outervbox.pack_start(blabel, expand=False, fill=False)
+
+ self.vbox = gtk.VBox()
+ self.vbox.set_size_request(250, -1)
+
+ for i, fn in enumerate(('credits', 'credits-l10n')):
+ if i != 0:
+ self.vbox.pack_start(gtk.HSeparator(), padding=SPACING,
+ expand=False, fill=False)
+ filename = os.path.join(doc_root, fn+'.txt')
+ l = ''
+ if not os.access(filename, os.F_OK|os.R_OK):
+ l = _("Couldn't open %s") % filename
+ else:
+ credits_f = file(filename)
+ l = credits_f.read()
+ credits_f.close()
+ if os.name == 'nt':
+ # gtk ignores blank lines on win98
+ l = l.replace('\n\n', '\n\t\n')
+ label = gtk.Label(l.strip())
+ label.set_line_wrap(True)
+ label.set_selectable(True)
+ label.set_justify(gtk.JUSTIFY_CENTER)
+ label.set_size_request(250,-1)
+ self.vbox.pack_start(label, expand=False, fill=False)
+
+ self.scroll.add_with_viewport(self.vbox)
+
+ self.outervbox.pack_start(self.scroll, padding=SPACING)
+
+ self.donatebutton = gtk.Button(_("Donate"))
+ self.donatebutton.connect('clicked', donatefunc)
+ self.donatebuttonbox = gtk.HButtonBox()
+ self.donatebuttonbox.pack_start(self.donatebutton,
+ expand=False, fill=False)
+ self.outervbox.pack_end(self.donatebuttonbox, expand=False, fill=False)
+
+ self.win.add(self.outervbox)
+
+ self.win.show_all()
+
+ def close(self, widget):
+ self.win.destroy()
+
+
+class LogWindow(object):
+ def __init__(self, main, logbuffer, config):
+ self.config = config
+ self.main = main
+ self.win = Window()
+ self.win.set_title(_("%s Activity Log")%app_name)
+ self.win.set_default_size(600, 200)
+ self.win.set_border_width(SPACING)
+
+ self.buffer = logbuffer
+ self.text = gtk.TextView(self.buffer)
+ self.text.set_editable(False)
+ self.text.set_cursor_visible(False)
+ self.text.set_wrap_mode(gtk.WRAP_WORD)
+
+ self.scroll = gtk.ScrolledWindow()
+ self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.scroll.set_shadow_type(gtk.SHADOW_IN)
+ self.scroll.add(self.text)
+
+ self.vbox = gtk.VBox(spacing=SPACING)
+ self.vbox.pack_start(self.scroll)
+
+ self.buttonbox = gtk.HButtonBox()
+ self.buttonbox.set_spacing(SPACING)
+
+ self.closebutton = gtk.Button(stock='gtk-close')
+ self.closebutton.connect('clicked', self.close)
+
+ self.savebutton = gtk.Button(stock='gtk-save')
+ self.savebutton.connect('clicked', self.save_log_file_selection)
+
+ self.clearbutton = gtk.Button(stock='gtk-clear')
+ self.clearbutton.connect('clicked', self.clear_log)
+
+ self.buttonbox.pack_start(self.savebutton)
+ self.buttonbox.pack_start(self.closebutton)
+
+ self.hbox2 = gtk.HBox(homogeneous=False)
+
+ self.hbox2.pack_end(self.buttonbox, expand=False, fill=False)
+
+ bb = gtk.HButtonBox()
+ bb.pack_start(self.clearbutton)
+ self.hbox2.pack_start(bb, expand=False, fill=True)
+
+ self.vbox.pack_end(self.hbox2, expand=False, fill=True)
+
+ self.win.add(self.vbox)
+ self.win.connect("destroy", lambda w: self.main.window_closed('log'))
+ self.scroll_to_end()
+ self.win.show_all()
+
+ def scroll_to_end(self):
+ mark = self.buffer.create_mark(None, self.buffer.get_end_iter())
+ self.text.scroll_mark_onscreen(mark)
+
+ def save_log_file_selection(self, *args):
+ name = 'bittorrent.log'
+ path = smart_dir(self.config['save_in'])
+ fullname = os.path.join(path, name)
+ self.main.open_window('savefile',
+ title=_("Save log in:"),
+ fullname=fullname,
+ got_location_func=self.save_log,
+ no_location_func=lambda: self.main.window_closed('savefile'))
+
+
+ def save_log(self, saveas):
+ self.main.window_closed('savefile')
+ f = file(saveas, 'w')
+ f.write(self.buffer.get_text(self.buffer.get_start_iter(),
+ self.buffer.get_end_iter()))
+ save_message = self.buffer.log_text(_("log saved"), None)
+ f.write(save_message)
+ f.close()
+
+ def clear_log(self, *args):
+ self.buffer.clear_log()
+
+ def close(self, widget):
+ self.win.destroy()
+
+
+class LogBuffer(gtk.TextBuffer):
+
+ def __init__(self):
+ gtk.TextBuffer.__init__(self)
+
+ tt = self.get_tag_table()
+
+ size_tag = gtk.TextTag('small')
+ size_tag.set_property('size-points', 10)
+ tt.add(size_tag)
+
+ info_tag = gtk.TextTag('info')
+ info_tag.set_property('foreground', '#00a040')
+ tt.add(info_tag)
+
+ warning_tag = gtk.TextTag('warning')
+ warning_tag.set_property('foreground', '#a09000')
+ tt.add(warning_tag)
+
+ error_tag = gtk.TextTag('error')
+ error_tag.set_property('foreground', '#b00000')
+ tt.add(error_tag)
+
+ critical_tag = gtk.TextTag('critical')
+ critical_tag.set_property('foreground', '#b00000')
+ critical_tag.set_property('weight', pango.WEIGHT_BOLD)
+ tt.add(critical_tag)
+
+
+ def log_text(self, text, severity=CRITICAL):
+ now_str = datetime.datetime.strftime(datetime.datetime.now(),
+ '[%Y-%m-%d %H:%M:%S] ')
+ self.insert_with_tags_by_name(self.get_end_iter(), now_str, 'small')
+ if severity is not None:
+ self.insert_with_tags_by_name(self.get_end_iter(), '%s\n'%text,
+ 'small', status_dict[severity])
+ else:
+ self.insert_with_tags_by_name(self.get_end_iter(),
+ ' -- %s -- \n'%text, 'small')
+
+ return now_str+text+'\n'
+
+ def clear_log(self):
+ self.set_text('')
+ self.log_text(_("log cleared"), None)
+
+
+class CheckButton(gtk.CheckButton):
+ def __init__(self, label, main, option_name, initial_value,
+ extra_callback=None):
+ gtk.CheckButton.__init__(self, label)
+ self.main = main
+ self.option_name = option_name
+ self.option_type = type(initial_value)
+ self.set_active(bool(initial_value))
+ self.extra_callback = extra_callback
+ self.connect('toggled', self.callback)
+
+ def callback(self, *args):
+ self.main.config[self.option_name] = \
+ self.option_type(not self.main.config[self.option_name])
+ self.main.setfunc(self.option_name, self.main.config[self.option_name])
+ if self.extra_callback is not None:
+ self.extra_callback()
+
+
+class SettingsWindow(object):
+
+ def __init__(self, main, config, setfunc):
+ self.main = main
+ self.setfunc = setfunc
+ self.config = config
+ self.win = Window()
+ self.win.connect("destroy", lambda w: main.window_closed('settings'))
+ self.win.set_title(_("%s Settings")%app_name)
+ self.win.set_border_width(SPACING)
+
+ self.notebook = gtk.Notebook()
+
+ self.vbox = gtk.VBox(spacing=SPACING)
+ self.vbox.pack_start(self.notebook, expand=False, fill=False)
+
+ # General tab
+ if os.name == 'nt':
+ self.cb_box = gtk.VBox(spacing=SPACING)
+ self.cb_box.set_border_width(SPACING)
+ self.notebook.append_page(self.cb_box, gtk.Label(_("General")))
+
+ self.startup_checkbutton = CheckButton(
+ _("Launch BitTorrent when Windows starts"), self,
+ 'launch_on_startup', self.config['launch_on_startup'])
+ self.cb_box.pack_start(self.startup_checkbutton, expand=False, fill=False)
+ self.startup_checkbutton.connect('toggled', self.launch_on_startup)
+
+ self.minimize_checkbutton = CheckButton(
+ _("Minimize to system tray"), self,
+ 'minimize_to_tray', self.config['minimize_to_tray'])
+ self.cb_box.pack_start(self.minimize_checkbutton, expand=False, fill=False)
+
+ # allow the user to set the progress bar text to all black
+ self.progressbar_hack = CheckButton(
+ _("Progress bar text is always black\n(requires restart)"),
+ self, 'progressbar_hack', self.config['progressbar_hack'])
+
+ self.cb_box.pack_start(self.progressbar_hack, expand=False, fill=False)
+ # end General tab
+
+ # Saving tab
+ self.saving_box = gtk.VBox(spacing=SPACING)
+ self.saving_box.set_border_width(SPACING)
+ self.notebook.append_page(self.saving_box, gtk.Label(_("Saving")))
+
+ self.dl_frame = gtk.Frame(_("Save new downloads in:"))
+ self.saving_box.pack_start(self.dl_frame, expand=False, fill=False)
+
+ self.dl_box = gtk.VBox(spacing=SPACING)
+ self.dl_box.set_border_width(SPACING)
+ self.dl_frame.add(self.dl_box)
+ self.save_in_box = gtk.HBox(spacing=SPACING)
+
+ self.dl_save_in = gtk.Entry()
+ self.dl_save_in.set_editable(False)
+ self.set_save_in(self.config['save_in'])
+ self.save_in_box.pack_start(self.dl_save_in, expand=True, fill=True)
+
+ self.dl_save_in_button = gtk.Button(_("Change..."))
+ self.dl_save_in_button.connect('clicked', self.get_save_in)
+ self.save_in_box.pack_start(self.dl_save_in_button, expand=False, fill=False)
+ self.dl_box.pack_start(self.save_in_box, expand=False, fill=False)
+
+ self.dl_ask_checkbutton = CheckButton(
+ _("Ask where to save each new download"), self,
+ 'ask_for_save', self.config['ask_for_save'])
+
+ self.dl_box.pack_start(self.dl_ask_checkbutton, expand=False, fill=False)
+ # end Saving tab
+
+ # Downloading tab
+ self.downloading_box = gtk.VBox(spacing=SPACING)
+ self.downloading_box.set_border_width(SPACING)
+ self.notebook.append_page(self.downloading_box, gtk.Label(_("Downloading")))
+
+ self.dnd_frame = gtk.Frame(_("When starting a new torrent:"))
+ self.dnd_box = gtk.VBox(spacing=SPACING, homogeneous=True)
+ self.dnd_box.set_border_width(SPACING)
+
+ self.dnd_states = ['replace','add','ask']
+ self.dnd_original_state = self.config['start_torrent_behavior']
+
+ self.always_replace_radio = gtk.RadioButton(
+ group=None,
+ label=_("_Stop another running torrent to make room"))
+ self.dnd_box.pack_start(self.always_replace_radio)
+ self.always_replace_radio.state_name = self.dnd_states[0]
+
+ self.always_add_radio = gtk.RadioButton(
+ group=self.always_replace_radio,
+ label=_("_Don't stop other running torrents"))
+ self.dnd_box.pack_start(self.always_add_radio)
+ self.always_add_radio.state_name = self.dnd_states[1]
+
+ self.always_ask_radio = gtk.RadioButton(
+ group=self.always_replace_radio,
+ label=_("_Ask each time")
+ )
+ self.dnd_box.pack_start(self.always_ask_radio)
+ self.always_ask_radio.state_name = self.dnd_states[2]
+
+ self.dnd_group = self.always_replace_radio.get_group()
+ for r in self.dnd_group:
+ r.connect('toggled', self.start_torrent_behavior_changed)
+
+ self.set_start_torrent_behavior(self.config['start_torrent_behavior'])
+
+ self.dnd_frame.add(self.dnd_box)
+ self.downloading_box.pack_start(self.dnd_frame, expand=False, fill=False)
+
+ # Seeding tab
+ self.seeding_box = gtk.VBox(spacing=SPACING)
+ self.seeding_box.set_border_width(SPACING)
+ self.notebook.append_page(self.seeding_box, gtk.Label(_("Seeding")))
+
+ def colon_split(framestr):
+ COLONS = (':', u'\uff1a')
+ for colon in COLONS:
+ if colon in framestr:
+ return framestr.split(colon)
+ return '', framestr
+
+ nt_framestr = _("Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first.")
+ nt_title, nt_rem = colon_split(nt_framestr)
+ nt_msg1, nt_msg2, nt_msg4 = nt_rem.split('[_]')
+ nt_msg3 = ''
+ if ',' in nt_msg2:
+ nt_msg2, nt_msg3 = nt_msg2.split(',')
+ nt_msg2 += ','
+
+ self.next_torrent_frame = gtk.Frame(nt_title+':')
+ self.next_torrent_box = gtk.VBox(spacing=SPACING, homogeneous=True)
+ self.next_torrent_box.set_border_width(SPACING)
+
+ self.next_torrent_frame.add(self.next_torrent_box)
+
+
+ self.next_torrent_ratio_box = gtk.HBox()
+ self.next_torrent_ratio_box.pack_start(gtk.Label(nt_msg1),
+ fill=False, expand=False)
+ self.next_torrent_ratio_field = PercentValidator('next_torrent_ratio',
+ self.config, self.setfunc)
+ self.next_torrent_ratio_box.pack_start(self.next_torrent_ratio_field,
+ fill=False, expand=False)
+ self.next_torrent_ratio_box.pack_start(gtk.Label(nt_msg2),
+ fill=False, expand=False)
+ self.next_torrent_box.pack_start(self.next_torrent_ratio_box)
+
+
+ self.next_torrent_time_box = gtk.HBox()
+ self.next_torrent_time_box.pack_start(gtk.Label(nt_msg3),
+ fill=False, expand=False)
+ self.next_torrent_time_field = MinutesValidator('next_torrent_time',
+ self.config, self.setfunc)
+ self.next_torrent_time_box.pack_start(self.next_torrent_time_field,
+ fill=False, expand=False)
+ self.next_torrent_time_box.pack_start(gtk.Label(nt_msg4),
+ fill=False, expand=False)
+ self.next_torrent_box.pack_start(self.next_torrent_time_box)
+
+ def seed_forever_extra():
+ for field in (self.next_torrent_ratio_field,
+ self.next_torrent_time_field):
+ field.set_sensitive(not self.config['seed_forever'])
+
+ seed_forever_extra()
+ self.seed_forever = CheckButton( _("Seed indefinitely"), self,
+ 'seed_forever',
+ self.config['seed_forever'],
+ seed_forever_extra)
+ self.next_torrent_box.pack_start(self.seed_forever)
+ # end next torrent seed behavior
+
+ # begin last torrent seed behavior
+ lt_framestr = _("Seed last completed torrent: until share ratio reaches [_] percent.")
+ lt_title, lt_rem = colon_split(lt_framestr)
+ lt_msg1, lt_msg2 = lt_rem.split('[_]')
+
+ self.seeding_box.pack_start(self.next_torrent_frame, expand=False, fill=False)
+
+ self.last_torrent_frame = gtk.Frame(lt_title+':')
+ self.last_torrent_vbox = gtk.VBox(spacing=SPACING)
+ self.last_torrent_vbox.set_border_width(SPACING)
+ self.last_torrent_box = gtk.HBox()
+ self.last_torrent_box.pack_start(gtk.Label(lt_msg1),
+ expand=False, fill=False)
+ self.last_torrent_ratio_field = PercentValidator('last_torrent_ratio',
+ self.config, self.setfunc)
+ self.last_torrent_box.pack_start(self.last_torrent_ratio_field,
+ fill=False, expand=False)
+ self.last_torrent_box.pack_start(gtk.Label(lt_msg2),
+ fill=False, expand=False)
+ self.last_torrent_vbox.pack_start(self.last_torrent_box)
+
+ def seed_last_forever_extra():
+ self.last_torrent_ratio_field.set_sensitive(
+ not self.config['seed_last_forever'])
+
+ seed_last_forever_extra()
+
+ self.seed_last_forever = CheckButton(_("Seed indefinitely"), self,
+ 'seed_last_forever',
+ self.config['seed_last_forever'],
+ seed_last_forever_extra)
+ self.last_torrent_vbox.pack_start(self.seed_last_forever)
+
+ self.last_torrent_frame.add(self.last_torrent_vbox)
+ self.seeding_box.pack_start(self.last_torrent_frame, expand=False, fill=False)
+
+ # Network tab
+ self.network_box = gtk.VBox(spacing=SPACING)
+ self.network_box.set_border_width(SPACING)
+ self.notebook.append_page(self.network_box, gtk.Label(_("Network")))
+
+ self.port_range_frame = gtk.Frame(_("Look for available port:"))
+ self.port_range_box = gtk.VBox(spacing=SPACING)
+ self.port_range_box.set_border_width(SPACING)
+
+ self.port_range = gtk.HBox()
+ self.port_range.pack_start(gtk.Label(_("starting at port: ")),
+ expand=False, fill=False)
+ self.minport_field = PortValidator('minport', self.config, self.setfunc)
+ self.minport_field.add_end('maxport')
+ self.port_range.pack_start(self.minport_field, expand=False, fill=False)
+ self.minport_field.settingswindow = self
+ self.port_range.pack_start(gtk.Label(' (1024-65535)'),
+ expand=False, fill=False)
+ self.port_range_box.pack_start(self.port_range,
+ expand=False, fill=False)
+
+ self.upnp = CheckButton(_("Enable automatic port mapping")+' (_UPnP)',
+ self, 'upnp', self.config['upnp'], None)
+ self.port_range_box.pack_start(self.upnp,
+ expand=False, fill=False)
+
+ self.port_range_frame.add(self.port_range_box)
+ self.network_box.pack_start(self.port_range_frame, expand=False, fill=False)
+
+ self.ip_frame = gtk.Frame(_("IP to report to the tracker:"))
+ self.ip_box = gtk.VBox()
+ self.ip_box.set_border_width(SPACING)
+ self.ip_field = IPValidator('ip', self.config, self.setfunc)
+ self.ip_box.pack_start(self.ip_field, expand=False, fill=False)
+ label = gtk.Label(_("(Has no effect unless you are on the\nsame local network as the tracker)"))
+ label.set_line_wrap(True)
+ self.ip_box.pack_start(lalign(label), expand=False, fill=False)
+ self.ip_frame.add(self.ip_box)
+ self.network_box.pack_start(self.ip_frame, expand=False, fill=False)
+
+ # end Network tab
+
+ # Language tab
+ self.languagechooser = LanguageChooser()
+ self.notebook.append_page(self.languagechooser, gtk.Label("Language"))
+ # end Language tab
+
+ # Advanced tab
+ if advanced_ui:
+ self.advanced_box = gtk.VBox(spacing=SPACING)
+ self.advanced_box.set_border_width(SPACING)
+ hint = gtk.Label(_("WARNING: Changing these settings can\nprevent %s from functioning correctly.")%app_name)
+ self.advanced_box.pack_start(lalign(hint), expand=False, fill=False)
+ self.store = gtk.ListStore(*[gobject.TYPE_STRING] * 2)
+ for option in ui_options[advanced_ui_options_index:]:
+ self.store.append((option, str(self.config[option])))
+
+ self.treeview = gtk.TreeView(self.store)
+ r = gtk.CellRendererText()
+ column = gtk.TreeViewColumn(_("Option"), r, text=0)
+ self.treeview.append_column(column)
+ r = gtk.CellRendererText()
+ r.set_property('editable', True)
+ r.connect('edited', self.store_value_edited)
+ column = gtk.TreeViewColumn(_("Value"), r, text=1)
+ self.treeview.append_column(column)
+ self.advanced_frame = gtk.Frame()
+ self.advanced_frame.set_shadow_type(gtk.SHADOW_IN)
+ self.advanced_frame.add(self.treeview)
+
+ self.advanced_box.pack_start(self.advanced_frame, expand=False, fill=False)
+ self.notebook.append_page(self.advanced_box, gtk.Label(_("Advanced")))
+
+
+ self.win.add(self.vbox)
+ self.win.show_all()
+
+
+ def get_save_in(self, widget=None):
+ self.file_selection = self.main.open_window('choosefolder',
+ title=_("Choose default download directory"),
+ fullname=self.config['save_in'],
+ got_location_func=self.set_save_in,
+ no_location_func=lambda: self.main.window_closed('choosefolder'))
+
+ def set_save_in(self, save_location):
+ self.main.window_closed('choosefolder')
+ if os.path.isdir(save_location):
+ if save_location[-1] != os.sep:
+ save_location += os.sep
+ self.config['save_in'] = save_location
+ save_in = path_wrap(self.config['save_in'])
+ self.dl_save_in.set_text(save_in)
+ self.setfunc('save_in', self.config['save_in'])
+
+ def launch_on_startup(self, *args):
+ dst = os.path.join(get_startup_dir(), app_name)
+ if self.config['launch_on_startup']:
+ src = os.path.abspath(sys.argv[0])
+ create_shortcut(src, dst, "--start_minimized")
+ else:
+ try:
+ remove_shortcut(dst)
+ except Exception, e:
+ self.main.global_error(WARNING, _("Failed to remove shortcut: %s") % str(e))
+
+ def set_start_torrent_behavior(self, state_name):
+ if state_name in self.dnd_states:
+ for r in self.dnd_group:
+ if r.state_name == state_name:
+ r.set_active(True)
+ else:
+ r.set_active(False)
+ else:
+ self.always_replace_radio.set_active(True)
+
+ def start_torrent_behavior_changed(self, radiobutton):
+ if radiobutton.get_active():
+ self.setfunc('start_torrent_behavior', radiobutton.state_name)
+
+ def store_value_edited(self, cell, row, new_text):
+ it = self.store.get_iter_from_string(row)
+ option = ui_options[int(row)+advanced_ui_options_index]
+ t = type(defconfig[option])
+ try:
+ if t is type(None) or t is str:
+ value = new_text
+ elif t is int or t is long:
+ value = int(new_text)
+ elif t is float:
+ value = float(new_text)
+ elif t is bool:
+ value = value == 'True'
+ else:
+ raise TypeError, str(t)
+ except ValueError:
+ return
+ self.setfunc(option, value)
+ self.store.set(it, 1, str(value))
+
+ def close(self, widget):
+ self.win.destroy()
+
+
+class FileListWindow(object):
+
+ SET_PRIORITIES = False
+
+ def __init__(self, metainfo, closefunc):
+ self.metainfo = metainfo
+ self.setfunc = None
+ self.allocfunc = None
+ self.win = Window()
+ self.win.set_title(_('Files in "%s"') % self.metainfo.name)
+ self.win.connect("destroy", closefunc)
+ self.tooltips = gtk.Tooltips()
+
+ self.filepath_to_iter = {}
+
+ self.box1 = gtk.VBox()
+
+ size_request = (0,0)
+ if self.SET_PRIORITIES:
+ self.toolbar = gtk.Toolbar()
+ for label, tip, stockicon, method, arg in (
+ (_("Never" ), _("Never download" ), gtk.STOCK_DELETE, self.dosomething, -1,),
+ (_("Normal"), _("Download normally"), gtk.STOCK_NEW , self.dosomething, 0,),
+ (_("First" ), _("Download first" ),'bt-finished' , self.dosomething, +1,),):
+ self.make_tool_item(label, tip, stockicon, method, arg)
+ size_request = (-1,54)
+ self.box1.pack_start(self.toolbar, False)
+
+ self.sw = gtk.ScrolledWindow()
+ self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.box1.pack_start(self.sw)
+ self.win.add(self.box1)
+
+ columns = [_("Filename"),_("Length"),_('%')]
+ pre_size_list = ['M'*30, '6666 MB', '100.0', 'Download','black']
+ if self.SET_PRIORITIES:
+ columns.append(_("Download"))
+ num_columns = len(pre_size_list)
+
+ self.store = gtk.TreeStore(*[gobject.TYPE_STRING] * num_columns)
+ self.store.append(None, pre_size_list)
+ self.treeview = gtk.TreeView(self.store)
+ self.treeview.set_enable_search(True)
+ self.treeview.set_search_column(0)
+ cs = []
+ for i, name in enumerate(columns):
+ r = gtk.CellRendererText()
+ r.set_property('xalign', (0, 1, 1, 1)[i])
+ if i == 0:
+ column = gtk.TreeViewColumn(name, r, text = i, foreground = len(pre_size_list)-1)
+ else:
+ column = gtk.TreeViewColumn(name, r, text = i)
+ column.set_resizable(True)
+ self.treeview.append_column(column)
+ cs.append(column)
+
+ self.sw.add(self.treeview)
+ self.treeview.set_headers_visible(False)
+ self.treeview.columns_autosize()
+ self.box1.show_all()
+ self.treeview.realize()
+
+ for column in cs:
+ column.set_fixed_width(max(5,column.get_width()))
+ column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ self.treeview.set_headers_visible(True)
+ self.store.clear()
+
+ if self.SET_PRIORITIES:
+ self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+ else:
+ self.treeview.get_selection().set_mode(gtk.SELECTION_NONE)
+
+ self.piecelen = self.metainfo.piece_length
+ self.lengths = self.metainfo.sizes
+ self.initialize_file_priorities()#[0,0])
+ for name, size, priority in itertools.izip(self.metainfo.orig_files,
+ self.metainfo.sizes, self.priorities):
+ parent_name, local_name = os.path.split(name)
+ parent_iter = self.recursive_add(parent_name)
+
+ row = [local_name, Size(size), '?','', 'black']
+ it = self.store.append(parent_iter, row)
+ self.filepath_to_iter[name] = it
+
+ self.treeview.expand_all()
+ tvsr = self.treeview.size_request()
+ vertical_padding = 18
+ size_request = [max(size_request[0],tvsr[0]),
+ (size_request[1] + tvsr[1] ) + vertical_padding]
+ maximum_height = 300
+ if size_request[1] > maximum_height - SCROLLBAR_WIDTH:
+ size_request[1] = maximum_height
+ size_request[0] = size_request[0] + SCROLLBAR_WIDTH
+ self.win.set_default_size(*size_request)
+
+ self.win.show_all()
+
+ def recursive_add(self, fullpath):
+ if fullpath == '':
+ return None
+ elif self.filepath_to_iter.has_key(fullpath):
+ return self.filepath_to_iter[fullpath]
+ else:
+ parent_path, local_path = os.path.split(fullpath)
+ parent_iter = self.recursive_add(parent_path)
+ it = self.store.append(parent_iter,
+ (local_path,) +
+ ('',) * (self.store.get_n_columns()-2) +
+ ('black',))
+ self.filepath_to_iter[fullpath] = it
+ return it
+
+ def make_tool_item(self, label, tip, stockicon, method, arg):
+ icon = gtk.Image()
+ icon.set_from_stock(stockicon, gtk.ICON_SIZE_SMALL_TOOLBAR)
+ item = gtk.ToolButton(icon_widget=icon, label=label)
+ item.set_homogeneous(True)
+ item.set_tooltip(self.tooltips, tip)
+ if arg is not None:
+ item.connect('clicked', method, arg)
+ else:
+ item.connect('clicked', method)
+ self.toolbar.insert(item, 0)
+
+ def initialize_file_priorities(self):
+ self.priorities = []
+ for length in self.lengths:
+ self.priorities.append(0)
+
+## Uoti wrote these methods. I have no idea what this code is supposed to do.
+## --matt
+## def set_priorities(self, widget):
+## r = []
+## piece = 0
+## pos = 0
+## curprio = prevprio = 1000
+## for priority, length in itertools.izip(self.priorities, self.lengths):
+## pos += length
+## curprio = min(priority, curprio)
+## while pos >= (piece + 1) * self.piecelen:
+## if curprio != prevprio:
+## r.extend((piece, curprio))
+## prevprio = curprio
+## if curprio == priority:
+## piece = pos // self.piecelen
+## else:
+## piece += 1
+## if pos == piece * self.piecelen:
+## curprio = 1000
+## else:
+## curprio = priority
+## if curprio != prevprio:
+## r.extend((piece, curprio))
+## self.setfunc(r)
+## it = self.store.get_iter_first()
+## for i in xrange(len(self.priorities)):
+## self.store.set_value(it, 5, "black")
+## it = self.store.iter_next(it)
+## self.origpriorities = list(self.priorities)
+##
+## def initialize_file_priorities(self, piecepriorities):
+## self.priorities = []
+## piecepriorities = piecepriorities + [999999999]
+## it = iter(piecepriorities)
+## assert it.next() == 0
+## pos = piece = curprio = 0
+## for length in self.lengths:
+## pos += length
+## priority = curprio
+## while pos >= piece * self.piecelen:
+## curprio = it.next()
+## if pos > piece * self.piecelen:
+## priority = max(priority, curprio)
+## piece = it.next()
+## self.priorities.append(priority)
+## self.origpriorities = list(self.priorities)
+
+ def dosomething(self, widget, dowhat):
+ self.treeview.get_selection().selected_foreach(self.adjustfile, dowhat)
+
+ def adjustfile(self, treemodel, path, it, dowhat):
+ length = treemodel.get(it, 1)[0]
+ if length == '':
+ child = treemodel.iter_children(it)
+ while True:
+ if child is None:
+ return
+ elif not treemodel.is_ancestor(it, child):
+ return
+ else:
+ self.adjustfile(treemodel, path, child, dowhat)
+ child = treemodel.iter_next(child)
+
+ else:
+ # BUG: need to set file priorities in backend here
+ if dowhat == -1:
+ text, color = _("never"), 'darkgrey'
+ elif dowhat == 1:
+ text, color = _("first"), 'darkgreen'
+ else:
+ text, color = '', 'black'
+ treemodel.set_value(it, 3, text )
+ treemodel.set_value(it, 4, color)
+
+ def update(self, left, allocated):
+ for name, left, total, alloc in itertools.izip(
+ self.metainfo.orig_files, left, self.lengths, allocated):
+ it = self.filepath_to_iter[name]
+ if total == 0:
+ p = 1
+ else:
+ p = (total - left) / total
+ self.store.set_value(it, 2, "%.1f" % (int(p * 1000)/10))
+
+ def close(self):
+ self.win.destroy()
+
+
+class PeerListWindow(object):
+
+ def __init__(self, torrent_name, closefunc):
+ self.win = Window()
+ self.win.connect("destroy", closefunc)
+ self.win.set_title( _('Peers for "%s"')%torrent_name)
+ self.sw = gtk.ScrolledWindow()
+ self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.sw.set_shadow_type(gtk.SHADOW_IN)
+ self.win.add(self.sw)
+
+ column_header = [_("IP address"), _("Client"), _("Connection"), _("KB/s down"), _("KB/s up"), _("MB downloaded"), _("MB uploaded"), _("% complete"), _("KB/s est. peer download")]
+ pre_size_list = ['666.666.666.666', 'TorrentStorm 1.3', 'bad peer', 66666, 66666, '1666.66', '1666.66', '100.0', 6666]
+ numeric_cols = [3,4,5,6,7,8]
+ store_types = [gobject.TYPE_STRING]*3 + [gobject.TYPE_INT]*2 + [gobject.TYPE_STRING]*3 + [gobject.TYPE_INT]
+
+ if advanced_ui:
+ column_header[2:2] = [_("Peer ID")]
+ pre_size_list[2:2] = ['-AZ2104-']
+ store_types[2:2] = [gobject.TYPE_STRING]
+ column_header[5:5] = [_("Interested"),_("Choked"),_("Snubbed")]
+ pre_size_list[5:5] = ['*','*','*']
+ store_types[5:5] = [gobject.TYPE_STRING]*3
+ column_header[9:9] = [_("Interested"),_("Choked"),_("Optimistic upload")]
+ pre_size_list[9:9] = ['*','*','*']
+ store_types[9:9] = [gobject.TYPE_STRING]*3
+ numeric_cols = [4,8,12,13,14,15]
+
+ num_columns = len(column_header)
+ self.store = gtk.ListStore(*store_types)
+ self.store.append(pre_size_list)
+
+ def makesortfunc(sort_func):
+ def sortfunc(treemodel, iter1, iter2, column):
+ a_str = treemodel.get_value(iter1, column)
+ b_str = treemodel.get_value(iter2, column)
+ if a_str is not None and b_str is not None:
+ return sort_func(a_str,b_str)
+ else:
+ return 0
+ return sortfunc
+
+ def ip_sort(a_str,b_str):
+ for a,b in zip(a_str.split('.'), b_str.split('.')):
+ if a == b:
+ continue
+ if len(a) == len(b):
+ return cmp(a,b)
+ return cmp(int(a), int(b))
+ return 0
+
+ def float_sort(a_str,b_str):
+ a,b = 0,0
+ try: a = float(a_str)
+ except ValueError: pass
+ try: b = float(b_str)
+ except ValueError: pass
+ return cmp(a,b)
+
+ self.store.set_sort_func(0, makesortfunc(ip_sort), 0)
+ for i in range(2,5):
+ self.store.set_sort_func(num_columns-i, makesortfunc(float_sort), num_columns-i)
+
+ self.treeview = gtk.TreeView(self.store)
+ cs = []
+ for i, name in enumerate(column_header):
+ r = gtk.CellRendererText()
+ if i in numeric_cols:
+ r.set_property('xalign', 1)
+ column = gtk.TreeViewColumn(name, r, text = i)
+ column.set_resizable(True)
+ column.set_min_width(5)
+ column.set_sort_column_id(i)
+ self.treeview.append_column(column)
+ cs.append(column)
+ self.treeview.set_rules_hint(True)
+ self.sw.add(self.treeview)
+ self.treeview.set_headers_visible(False)
+ self.treeview.columns_autosize()
+ self.sw.show_all()
+ self.treeview.realize()
+ for column in cs:
+ column.set_fixed_width(column.get_width())
+ column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ self.treeview.set_headers_visible(True)
+ self.store.clear()
+ self.treeview.get_selection().set_mode(gtk.SELECTION_NONE)
+ width = self.treeview.size_request()[0]
+ self.win.set_default_size(width+SCROLLBAR_WIDTH, 300)
+ self.win.show_all()
+ self.prev = []
+
+
+ def update(self, peers, bad_peers):
+ fields = []
+
+ def p_bool(value): return value and '*' or ''
+
+ for peer in peers:
+ field = []
+ field.append(peer['ip'])
+
+ client, version = ClientIdentifier.identify_client(peer['id'])
+ field.append(client + ' ' + version)
+
+ if advanced_ui:
+ field.append(zurllib.quote(peer['id']))
+
+ field.append(peer['initiation'] == 'R' and _("remote") or _("local"))
+ dl = peer['download']
+ ul = peer['upload']
+
+ for l in (dl, ul):
+ rate = l[1]
+ if rate > 100:
+ field.append(int(round(rate/(2**10))))
+ else:
+ field.append(0)
+ if advanced_ui:
+ field.append(p_bool(l[2]))
+ field.append(p_bool(l[3]))
+ if len(l) > 4:
+ field.append(p_bool(l[4]))
+ else:
+ field.append(p_bool(peer['is_optimistic_unchoke']))
+
+ field.append('%.2f'%round(dl[0] / 2**20, 2))
+ field.append('%.2f'%round(ul[0] / 2**20, 2))
+ field.append('%.1f'%round(int(peer['completed']*1000)/10, 1))
+
+ field.append(int(peer['speed']//(2**10)))
+
+ fields.append(field)
+
+ for (ip, (is_banned, stats)) in bad_peers.iteritems():
+ field = []
+ field.append(ip)
+
+ client, version = ClientIdentifier.identify_client(stats.peerid)
+ field.append(client + ' ' + version)
+
+ if advanced_ui:
+ field.append(zurllib.quote(stats.peerid))
+
+ field.append(_("bad peer"))
+
+ # the sortable peer list won't take strings in these fields
+ field.append(0)
+
+ if advanced_ui:
+ field.extend([0] * 7) # upRate, * fields
+ else:
+ field.extend([0] * 1) # upRate
+
+ field.append(_("%d ok") % stats.numgood)
+ field.append(_("%d bad") % len(stats.bad))
+ if is_banned: # completion
+ field.append(_("banned"))
+ else:
+ field.append(_("ok"))
+ field.append(0) # peer dl rate
+ fields.append(field)
+
+ if self.store.get_sort_column_id() < 0:
+ # ListStore is unsorted, it might be faster to set only modified fields
+ it = self.store.get_iter_first()
+ for old, new in itertools.izip(self.prev, fields):
+ if old != new:
+ for i, value in enumerate(new):
+ if value != old[i]:
+ self.store.set_value(it, i, value)
+ it = self.store.iter_next(it)
+ for i in range(len(fields), len(self.prev)):
+ self.store.remove(it)
+ for i in range(len(self.prev), len(fields)):
+ self.store.append(fields[i])
+ self.prev = fields
+ else:
+ # ListStore is sorted, no reason not to to reset all fields
+ self.store.clear()
+ for field in fields:
+ self.store.append(field)
+
+
+
+ def close(self):
+ self.win.destroy()
+
+
+class TorrentInfoWindow(object):
+
+ def __init__(self, torrent_box, closefunc):
+ self.win = Window()
+ self.torrent_box = torrent_box
+ name = self.torrent_box.metainfo.name
+ self.win.set_title(_('Info for "%s"')%name)
+ self.win.set_size_request(-1,-1)
+ self.win.set_border_width(SPACING)
+ self.win.set_resizable(False)
+ self.win.connect('destroy', closefunc)
+ self.vbox = gtk.VBox(spacing=SPACING)
+
+ self.table = gtk.Table(rows=4, columns=3, homogeneous=False)
+ self.table.set_row_spacings(SPACING)
+ self.table.set_col_spacings(SPACING)
+ y = 0
+
+ def add_item(key, val, y):
+ self.table.attach(ralign(gtk.Label(key)), 0, 1, y, y+1)
+ v = gtk.Label(val)
+ v.set_selectable(True)
+ self.table.attach(lalign(v), 1, 2, y, y+1)
+
+ add_item(_("Torrent name:"), name, y)
+ y+=1
+
+ announce = ''
+ if self.torrent_box.metainfo.is_trackerless:
+ announce = _("(trackerless torrent)")
+ else:
+ announce = self.torrent_box.metainfo.announce
+ add_item(_("Announce url:"), announce, y)
+ y+=1
+
+ size = Size(self.torrent_box.metainfo.total_bytes)
+ num_files = _(", in one file")
+ if self.torrent_box.is_batch:
+ num_files = _(", in %d files") % len(self.torrent_box.metainfo.sizes)
+ add_item(_("Total size:"), str(size)+num_files, y)
+ y+=1
+
+ if advanced_ui:
+ pl = self.torrent_box.metainfo.piece_length
+ count, lastlen = divmod(size, pl)
+ sizedetail = '%d x %d + %d = %d' % (count, pl, lastlen, int(size))
+ add_item(_("Pieces:"), sizedetail, y)
+ y+=1
+ add_item(_("Info hash:"), self.torrent_box.infohash.encode('hex'), y)
+ y+=1
+
+ path = self.torrent_box.dlpath
+ filename = ''
+ if path is None:
+ path = ''
+ else:
+ if not self.torrent_box.is_batch:
+ path,filename = os.path.split(self.torrent_box.dlpath)
+ if path[-1] != os.sep:
+ path += os.sep
+ path = path_wrap(path)
+ add_item(_("Save in:"), path, y)
+ y+=1
+
+ if not self.torrent_box.is_batch:
+ add_item(_("File name:"), path_wrap(filename), y)
+ y+=1
+
+ self.vbox.pack_start(self.table)
+
+ if self.torrent_box.metainfo.comment not in (None, ''):
+ commentbuffer = gtk.TextBuffer()
+ commentbuffer.set_text(self.torrent_box.metainfo.comment)
+ commenttext = gtk.TextView(commentbuffer)
+ commenttext.set_editable(False)
+ commenttext.set_cursor_visible(False)
+ commenttext.set_wrap_mode(gtk.WRAP_WORD)
+ commentscroll = gtk.ScrolledWindow()
+ commentscroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ commentscroll.set_shadow_type(gtk.SHADOW_IN)
+ commentscroll.add(commenttext)
+ self.vbox.pack_start(commentscroll)
+
+ self.vbox.pack_start(gtk.HSeparator(), expand=False, fill=False)
+
+ self.hbox = gtk.HBox(spacing=SPACING)
+ lbbox = gtk.HButtonBox()
+ rbbox = gtk.HButtonBox()
+ lbbox.set_spacing(SPACING)
+
+ if LaunchPath.can_launch_files:
+ opendirbutton = IconButton(_("_Open directory"), stock=gtk.STOCK_OPEN)
+ opendirbutton.connect('clicked', self.torrent_box.open_dir)
+ lbbox.pack_start(opendirbutton, expand=False, fill=False)
+ opendirbutton.set_sensitive(self.torrent_box.can_open_dir())
+
+ filelistbutton = IconButton(_("Show _file list"), stock='gtk-index')
+ if self.torrent_box.is_batch:
+ filelistbutton.connect('clicked', self.torrent_box.open_filelist)
+ else:
+ filelistbutton.set_sensitive(False)
+ lbbox.pack_start(filelistbutton, expand=False, fill=False)
+
+ closebutton = gtk.Button(stock='gtk-close')
+ closebutton.connect('clicked', lambda w: self.close())
+ rbbox.pack_end(closebutton, expand=False, fill=False)
+
+ self.hbox.pack_start(lbbox, expand=False, fill=False)
+ self.hbox.pack_end( rbbox, expand=False, fill=False)
+
+ self.vbox.pack_end(self.hbox, expand=False, fill=False)
+
+ self.win.add(self.vbox)
+
+ self.win.show_all()
+
+ def close(self):
+ self.win.destroy()
+
+
+class TorrentBox(gtk.EventBox):
+ torrent_tip_format = '%s:\n %s\n %s'
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ gtk.EventBox.__init__(self)
+ self.infohash = infohash
+ self.metainfo = metainfo
+ self.completion = completion
+ self.main = main
+
+ self.main_torrent_dnd_tip = _("drag to reorder")
+ self.torrent_menu_tip = _("right-click for menu")
+
+ self.set_save_location(dlpath)
+
+ self.uptotal = self.main.torrents[self.infohash].uptotal
+ self.downtotal = self.main.torrents[self.infohash].downtotal
+ if self.downtotal > 0:
+ self.up_down_ratio = self.uptotal / self.metainfo.total_bytes
+ else:
+ self.up_down_ratio = None
+
+ self.infowindow = None
+ self.filelistwindow = None
+ self.is_batch = metainfo.is_batch
+ self.menu = None
+ self.menu_handler = None
+
+ self.vbox = gtk.VBox(homogeneous=False, spacing=SPACING)
+ self.label = gtk.Label()
+ self.set_name()
+
+ self.vbox.pack_start(lalign(self.label), expand=False, fill=False)
+
+ self.hbox = gtk.HBox(homogeneous=False, spacing=SPACING)
+
+ self.icon = gtk.Image()
+ self.icon.set_size_request(-1, 29)
+
+ self.iconbox = gtk.VBox()
+ self.iconevbox = gtk.EventBox()
+ self.iconevbox.add(self.icon)
+ self.iconbox.pack_start(self.iconevbox, expand=False, fill=False)
+ self.hbox.pack_start(self.iconbox, expand=False, fill=False)
+
+ self.vbox.pack_start(self.hbox)
+
+ self.infobox = gtk.VBox(homogeneous=False)
+
+ self.progressbarbox = gtk.HBox(homogeneous=False, spacing=SPACING)
+ self.progressbar = gtk.ProgressBar()
+
+ self.reset_progressbar_color()
+
+ if self.completion is not None:
+ self.progressbar.set_fraction(self.completion)
+ if self.completion >= 1:
+ done_label = self.make_done_label()
+ self.progressbar.set_text(done_label)
+ else:
+ self.progressbar.set_text('%.1f%%'%(self.completion*100))
+ else:
+ self.progressbar.set_text('?')
+
+ self.progressbarbox.pack_start(self.progressbar,
+ expand=True, fill=True)
+
+ self.buttonevbox = gtk.EventBox()
+ self.buttonbox = gtk.HBox(homogeneous=True, spacing=SPACING)
+
+ self.infobutton = gtk.Button()
+ self.infoimage = gtk.Image()
+ self.infoimage.set_from_stock('bt-info', gtk.ICON_SIZE_BUTTON)
+ self.infobutton.add(self.infoimage)
+ self.infobutton.connect('clicked', self.open_info)
+ self.main.tooltips.set_tip(self.infobutton,
+ _("Torrent info"))
+
+ self.buttonbox.pack_start(self.infobutton, expand=True)
+
+ self.cancelbutton = gtk.Button()
+ self.cancelimage = gtk.Image()
+ if self.completion is not None and self.completion >= 1:
+ self.cancelimage.set_from_stock('bt-remove', gtk.ICON_SIZE_BUTTON)
+ self.main.tooltips.set_tip(self.cancelbutton,
+ _("Remove torrent"))
+ else:
+ self.cancelimage.set_from_stock('bt-abort', gtk.ICON_SIZE_BUTTON)
+ self.main.tooltips.set_tip(self.cancelbutton,
+ _("Abort torrent"))
+
+ self.cancelbutton.add(self.cancelimage)
+ # not using 'clicked' because we want to check for CTRL key
+ self.cancelbutton.connect('button-release-event', self.confirm_remove)
+
+ self.buttonbox.pack_start(self.cancelbutton, expand=True, fill=False)
+ self.buttonevbox.add(self.buttonbox)
+
+ vbuttonbox = gtk.VBox(homogeneous=False)
+ vbuttonbox.pack_start(self.buttonevbox, expand=False, fill=False)
+ self.hbox.pack_end(vbuttonbox, expand=False, fill=False)
+
+ self.infobox.pack_start(self.progressbarbox, expand=False, fill=False)
+
+ self.hbox.pack_start(self.infobox, expand=True, fill=True)
+ self.add( self.vbox )
+
+ self.drag_source_set(gtk.gdk.BUTTON1_MASK,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+ self.connect('drag_data_get', self.drag_data_get)
+
+ self.connect('drag_begin' , self.drag_begin )
+ self.connect('drag_end' , self.drag_end )
+ self.cursor_handler_id = self.connect('enter_notify_event', self.change_cursors)
+
+
+ def set_save_location(self, dlpath):
+ self.dlpath = dlpath
+ updater_infohash = self.main.updater.infohash
+ if updater_infohash == self.infohash:
+ my_installer_dir = os.path.split(self.dlpath)[0]
+ if self.main.updater.installer_dir != my_installer_dir:
+ self.main.updater.set_installer_dir(my_installer_dir)
+
+
+ def reset_progressbar_color(self):
+ # Hack around broken GTK-Wimp theme:
+ # make progress bar text always black
+ # see task #694
+ if is_frozen_exe and self.main.config['progressbar_hack']:
+ style = self.progressbar.get_style().copy()
+ black = style.black
+ self.progressbar.modify_fg(gtk.STATE_PRELIGHT, black)
+
+
+ def change_cursors(self, *args):
+ # BUG: this is in a handler that is disconnected because the
+ # window attributes are None until after show_all() is called
+ self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))
+ self.buttonevbox.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))
+ self.disconnect(self.cursor_handler_id)
+
+
+ def drag_data_get(self, widget, context, selection, targetType, eventTime):
+ selection.set(selection.target, 8, self.infohash)
+
+ def drag_begin(self, *args):
+ pass
+
+ def drag_end(self, *args):
+ self.main.drag_end()
+
+ def make_done_label(self, statistics=None):
+ s = ''
+ if statistics and statistics['timeEst'] is not None:
+ s = _(", will seed for %s") % Duration(statistics['timeEst'])
+ elif statistics:
+ s = _(", will seed indefinitely.")
+
+ if self.up_down_ratio is not None:
+ done_label = _("Done, share ratio: %d%%") % \
+ (self.up_down_ratio*100) + s
+ elif statistics is not None:
+ done_label = _("Done, %s uploaded") % \
+ Size(statistics['upTotal']) + s
+ else:
+ done_label = _("Done")
+
+ return done_label
+
+
+ def set_name(self):
+ self.label.set_text(self.metainfo.name)
+ self.label.set_ellipsize(pango.ELLIPSIZE_END)
+
+ def make_menu(self, extra_menu_items=[]):
+ if self.menu_handler:
+ self.disconnect(self.menu_handler)
+
+ ## Basic Info
+ menu_items = [ MenuItem(_("Torrent _info" ), func=self.open_info), ]
+ open_dir_func = None
+ if LaunchPath.can_launch_files and self.can_open_dir():
+ open_dir_func = self.open_dir
+ menu_items.append( MenuItem(_("_Open directory" ), func=open_dir_func) )
+ filelistfunc = None
+ if self.is_batch:
+ filelistfunc = self.open_filelist
+ menu_items.append(MenuItem(_("_File list"), func=filelistfunc))
+ if self.torrent_state == RUNNING:
+ menu_items.append(MenuItem(_("_Peer list"), func=self.open_peerlist))
+ ## end Basic Info
+
+ menu_items.append(gtk.SeparatorMenuItem())
+
+ ## Settings
+ # change save location
+ change_save_location_func = None
+ if self.torrent_state != RUNNING and self.completion <= 0:
+ change_save_location_func = self.change_save_location
+ menu_items.append(MenuItem(_("_Change location"),
+ func=change_save_location_func))
+ # seed forever item
+ self.seed_forever_item = gtk.CheckMenuItem(_("_Seed indefinitely"))
+ self.reset_seed_forever()
+ def sft(widget, *args):
+ active = widget.get_active()
+ infohash = self.infohash
+ for option in ('seed_forever', 'seed_last_forever'):
+ self.main.torrentqueue.set_config(option, active, infohash)
+ self.main.torrentqueue.set_config(option, active, infohash)
+ self.seed_forever_item.connect('toggled', sft)
+ menu_items.append(self.seed_forever_item)
+ ## end Settings
+
+ menu_items.append(gtk.SeparatorMenuItem())
+
+ ## Queue state dependent items
+ if self.torrent_state == KNOWN:
+ menu_items.append( MenuItem(_("Re_start"), func=self.move_to_end ))
+ elif self.torrent_state == QUEUED:
+ #Here's where we'll put the "Start hash check" menu item
+ menu_items.append(MenuItem(_("Download _now"), func=self.start))
+ elif self.torrent_state in (RUNNING, RUN_QUEUED):
+ # no items for here
+ pass
+
+ ## Completion dependent items
+ if self.completion is not None and self.completion >= 1:
+ if self.torrent_state != KNOWN:
+ menu_items.append(MenuItem(_("_Finish"), func=self.finish))
+ menu_items.append( MenuItem(_("_Remove" ), func=self.confirm_remove))
+ else:
+ if self.torrent_state in (RUNNING, RUN_QUEUED):
+ menu_items.append(MenuItem(_("Download _later"), func=self.move_to_end))
+ else:
+ #Here's where we'll put the "Seed _later" menu item
+ pass
+ menu_items.append(MenuItem(_("_Abort" ), func=self.confirm_remove))
+
+ ## build the menu
+ self.menu = gtk.Menu()
+
+ for i in menu_items:
+ i.show()
+ self.menu.add(i)
+
+ self.menu_handler = self.connect_object("event", self.show_menu, self.menu)
+
+ def reset_seed_forever(self):
+ sfb = False
+ d = self.main.torrents[self.infohash].config.getDict()
+ if d.has_key('seed_forever'):
+ sfb = d['seed_forever']
+ self.seed_forever_item.set_active(bool(sfb))
+
+ def change_save_location(self, widget=None):
+ self.main.change_save_location(self.infohash)
+
+ def open_info(self, widget=None):
+ if self.infowindow is None:
+ self.infowindow = TorrentInfoWindow(self, self.infoclosed)
+
+ def infoclosed(self, widget=None):
+ self.infowindow = None
+
+ def close_info(self):
+ if self.infowindow is not None:
+ self.infowindow.close()
+
+ def open_filelist(self, widget):
+ if not self.is_batch:
+ return
+ if self.filelistwindow is None:
+ self.filelistwindow = FileListWindow(self.metainfo,
+ self.filelistclosed)
+ self.main.torrentqueue.check_completion(self.infohash, True)
+
+ def filelistclosed(self, widget):
+ self.filelistwindow = None
+
+ def close_filelist(self):
+ if self.filelistwindow is not None:
+ self.filelistwindow.close()
+
+ def close_child_windows(self):
+ self.close_info()
+ self.close_filelist()
+
+ def destroy(self):
+ if self.menu is not None:
+ self.menu.destroy()
+ self.menu = None
+ gtk.EventBox.destroy(self)
+
+ def show_menu(self, widget, event):
+ if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
+ widget.popup(None, None, None, event.button, event.time)
+ return True
+ return False
+
+ def _short_path(self, dlpath):
+ path_length = 40
+ sep = '...'
+ ret = os.path.split(dlpath)[0]
+ if len(ret) > path_length+len(sep):
+ return ret[:int(path_length/2)]+sep+ret[-int(path_length/2):]
+ else:
+ return ret
+
+ def get_path_to_open(self):
+ path = self.dlpath
+ if not self.is_batch:
+ path = os.path.split(self.dlpath)[0]
+ return path
+
+ def can_open_dir(self):
+ return os.access(self.get_path_to_open(), os.F_OK|os.R_OK)
+
+ def open_dir(self, widget):
+ LaunchPath.launchdir(self.get_path_to_open())
+
+ def confirm_remove(self, widget, event=None):
+ if event is not None and event.get_state() & gtk.gdk.CONTROL_MASK:
+ self.remove()
+ else:
+ message = _('Are you sure you want to remove "%s"?') % self.metainfo.name
+ if self.completion >= 1:
+ if self.up_down_ratio is not None:
+ message = _("Your share ratio for this torrent is %d%%. ")%(self.up_down_ratio*100) + message
+ else:
+ message = _("You have uploaded %s to this torrent. ")%(Size(self.uptotal)) + message
+
+ d = MessageDialog(self.main.mainwindow,
+ _("Remove this torrent?"),
+ message,
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_OK_CANCEL,
+ yesfunc=self.remove,
+ default=gtk.RESPONSE_OK,
+ )
+
+ def remove(self):
+ self.main.torrentqueue.remove_torrent(self.infohash)
+
+
+class KnownTorrentBox(TorrentBox):
+
+ torrent_state = KNOWN
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ TorrentBox.__init__(self, infohash, metainfo, dlpath, completion, main)
+
+ status_tip = ''
+ if completion >= 1:
+ self.icon.set_from_stock('bt-finished', gtk.ICON_SIZE_LARGE_TOOLBAR)
+ status_tip = _("Finished")
+ known_torrent_dnd_tip = _("drag into list to seed")
+ else:
+ self.icon.set_from_stock('bt-broken', gtk.ICON_SIZE_LARGE_TOOLBAR)
+ status_tip = _("Failed")
+ known_torrent_dnd_tip = _("drag into list to resume")
+
+ self.main.tooltips.set_tip(self.iconevbox,
+ self.torrent_tip_format % (status_tip,
+ known_torrent_dnd_tip,
+ self.torrent_menu_tip))
+ self.make_menu()
+ self.show_all()
+
+ def move_to_end(self, widget):
+ self.main.change_torrent_state(self.infohash, QUEUED)
+
+
+class DroppableTorrentBox(TorrentBox):
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ TorrentBox.__init__(self, infohash, metainfo, dlpath, completion, main)
+
+ self.drag_dest_set(gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+
+ self.connect('drag_data_received', self.drag_data_received)
+ self.connect('drag_motion', self.drag_motion)
+ self.index = None
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+ if targetType == BT_TARGET_TYPE:
+ half_height = self.size_request()[1] // 2
+ where = cmp(y, half_height)
+ if where == 0: where = 1
+ self.parent.put_infohash_at_child(selection.data, self, where)
+ else:
+ self.main.accept_dropped_file(widget, context, x, y, selection, targetType, time)
+
+ def drag_motion(self, widget, context, x, y, time):
+ self.get_current_index()
+ half_height = self.size_request()[1] // 2
+ if y < half_height:
+ self.parent.highlight_before_index(self.index)
+ else:
+ self.parent.highlight_after_index(self.index)
+ return False
+
+ def drag_end(self, *args):
+ self.parent.highlight_child()
+ TorrentBox.drag_end(self, *args)
+
+ def get_current_index(self):
+ self.index = self.parent.get_index_from_child(self)
+
+
+class QueuedTorrentBox(DroppableTorrentBox):
+ icon_name = 'bt-queued'
+ torrent_state = QUEUED
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ DroppableTorrentBox.__init__(self, infohash, metainfo, dlpath, completion, main)
+
+ self.state_name = _("Waiting")
+ self.main.tooltips.set_tip(self.iconevbox,
+ self.torrent_tip_format % (self.state_name,
+ self.main_torrent_dnd_tip,
+ self.torrent_menu_tip))
+
+ self.icon.set_from_stock(self.icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR)
+ self.make_menu()
+ self.show_all()
+
+ def start(self, widget):
+ self.main.runbox.put_infohash_last(self.infohash)
+
+ def finish(self, widget):
+ self.main.change_torrent_state(self.infohash, KNOWN)
+
+
+class PausedTorrentBox(DroppableTorrentBox):
+ icon_name = 'bt-paused'
+ torrent_state = RUN_QUEUED
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ DroppableTorrentBox.__init__(self, infohash, metainfo, dlpath, completion, main)
+
+ self.state_name = _("Paused")
+ self.main.tooltips.set_tip(self.iconevbox,
+ self.torrent_tip_format % (self.state_name,
+ self.main_torrent_dnd_tip,
+ self.torrent_menu_tip))
+
+ self.icon.set_from_stock(self.icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR)
+ self.make_menu()
+ self.show_all()
+
+ def move_to_end(self, widget):
+ self.main.change_torrent_state(self.infohash, QUEUED)
+
+ def finish(self, widget):
+ self.main.change_torrent_state(self.infohash, KNOWN)
+
+ def update_status(self, statistics):
+ # in case the TorrentQueue thread calls widget.update_status()
+ # before the GUI has changed the torrent widget to a
+ # RunningTorrentBox
+ pass
+
+
+class RunningTorrentBox(PausedTorrentBox):
+ torrent_state = RUNNING
+
+ def __init__(self, infohash, metainfo, dlpath, completion, main):
+ DroppableTorrentBox.__init__(self, infohash, metainfo, dlpath, completion, main)
+
+ self.main.tooltips.set_tip(self.iconevbox,
+ self.torrent_tip_format % (_("Running"),
+ self.main_torrent_dnd_tip,
+ self.torrent_menu_tip))
+
+ self.seed = False
+ self.peerlistwindow = None
+ self.update_peer_list_flag = 0
+
+ self.icon.set_from_stock('bt-running', gtk.ICON_SIZE_LARGE_TOOLBAR)
+
+ self.rate_label_box = gtk.HBox(homogeneous=True)
+
+ self.up_rate = gtk.Label()
+ self.down_rate = gtk.Label()
+ self.rate_label_box.pack_start(lalign(self.up_rate ),
+ expand=True, fill=True)
+ self.rate_label_box.pack_start(lalign(self.down_rate),
+ expand=True, fill=True)
+
+ self.infobox.pack_start(self.rate_label_box)
+
+ if advanced_ui:
+ self.extrabox = gtk.VBox(homogeneous=False)
+ #self.extrabox = self.vbox
+
+ self.up_curr = FancyLabel(_("Current up: %s" ), 0)
+ self.down_curr = FancyLabel(_("Current down: %s"), 0)
+ self.curr_box = gtk.HBox(homogeneous=True)
+ self.curr_box.pack_start(lalign(self.up_curr ), expand=True, fill=True)
+ self.curr_box.pack_start(lalign(self.down_curr), expand=True, fill=True)
+ self.extrabox.pack_start(self.curr_box)
+
+ self.up_prev = FancyLabel(_("Previous up: %s" ), 0)
+ self.down_prev = FancyLabel(_("Previous down: %s"), 0)
+ self.prev_box = gtk.HBox(homogeneous=True)
+ self.prev_box.pack_start(lalign(self.up_prev ), expand=True, fill=True)
+ self.prev_box.pack_start(lalign(self.down_prev), expand=True, fill=True)
+ self.extrabox.pack_start(self.prev_box)
+
+ self.share_ratio = FancyLabel(_("Share ratio: %0.02f%%"), 0)
+ self.extrabox.pack_start(lalign(self.share_ratio))
+
+ self.peer_info = FancyLabel(_("%s peers, %s seeds. Totals from "
+ "tracker: %s"), 0, 0, 'NA')
+ self.extrabox.pack_start(lalign(self.peer_info))
+
+ self.dist_copies = FancyLabel(_("Distributed copies: %d; Next: %s"), 0, '')
+ self.extrabox.pack_start(lalign(self.dist_copies))
+
+ self.piece_info = FancyLabel(_("Pieces: %d total, %d complete, "
+ "%d partial, %d active (%d empty)"), *(0,)*5)
+ self.extrabox.pack_start(lalign(self.piece_info))
+
+ self.bad_info = FancyLabel(_("%d bad pieces + %s in discarded requests"), 0, 0)
+ self.extrabox.pack_start(lalign(self.bad_info))
+
+ # extra info
+
+ pl = self.metainfo.piece_length
+ tl = self.metainfo.total_bytes
+ count, lastlen = divmod(tl, pl)
+ self.piece_count = count + (lastlen > 0)
+
+ self.infobox.pack_end(self.extrabox, expand=False, fill=False)
+
+ self.make_menu()
+ self.show_all()
+
+
+ def change_to_completed(self):
+ self.completion = 1.0
+ self.cancelimage.set_from_stock('bt-remove', gtk.ICON_SIZE_BUTTON)
+ self.main.tooltips.set_tip(self.cancelbutton,
+ _("Remove torrent"))
+
+ updater_infohash = self.main.updater.infohash
+ if updater_infohash == self.infohash:
+ self.main.updater.start_install()
+
+ self.make_menu()
+
+ def close_child_windows(self):
+ TorrentBox.close_child_windows(self)
+ self.close_peerlist()
+
+ def open_filelist(self, widget):
+ if not self.is_batch:
+ return
+ if self.filelistwindow is None:
+ self.filelistwindow = FileListWindow(self.metainfo,
+ self.filelistclosed)
+ self.main.make_statusrequest()
+
+ def open_peerlist(self, widget):
+ if self.peerlistwindow is None:
+ self.peerlistwindow = PeerListWindow(self.metainfo.name,
+ self.peerlistclosed)
+ self.main.make_statusrequest()
+
+ def peerlistclosed(self, widget):
+ self.peerlistwindow = None
+ self.update_peer_list_flag = 0
+
+ def close_peerlist(self):
+ if self.peerlistwindow is not None:
+ self.peerlistwindow.close()
+
+ rate_label = ': %s'
+ eta_label = '?'
+ done_label = _("Done")
+ progress_bar_label = _("%.1f%% done, %s remaining")
+ down_rate_label = _("Download rate")
+ up_rate_label = _("Upload rate" )
+
+ def update_status(self, statistics):
+ fractionDone = statistics.get('fractionDone')
+ activity = statistics.get('activity')
+
+ self.main.set_title(torrentName=self.metainfo.name,
+ fractionDone=fractionDone)
+
+ dt = self.downtotal
+ if statistics.has_key('downTotal'):
+ dt += statistics['downTotal']
+
+ ut = self.uptotal
+ if statistics.has_key('upTotal'):
+ ut += statistics['upTotal']
+
+ if dt > 0:
+ self.up_down_ratio = ut / self.metainfo.total_bytes
+
+ done_label = self.done_label
+ eta_label = self.eta_label
+ if 'numPeers' in statistics:
+ eta = statistics.get('timeEst')
+ if eta is not None:
+ eta_label = Duration(eta)
+ if fractionDone == 1:
+ done_label = self.make_done_label(statistics)
+
+ if fractionDone == 1:
+ self.progressbar.set_fraction(1)
+ self.progressbar.set_text(done_label)
+ self.reset_seed_forever()
+ if not self.completion >= 1:
+ self.change_to_completed()
+ else:
+ self.progressbar.set_fraction(fractionDone)
+ progress_bar_label = self.progress_bar_label % \
+ (int(fractionDone*1000)/10, eta_label)
+ self.progressbar.set_text(progress_bar_label)
+
+
+ if 'numPeers' not in statistics:
+ return
+
+ self.down_rate.set_text(self.down_rate_label+self.rate_label %
+ Rate(statistics['downRate']))
+ self.up_rate.set_text (self.up_rate_label+self.rate_label %
+ Rate(statistics['upRate']))
+
+ if advanced_ui:
+ if self.up_down_ratio is not None:
+ self.share_ratio.set_value(self.up_down_ratio*100)
+
+ num_seeds = statistics['numSeeds']
+ if self.seed:
+ num_seeds = statistics['numOldSeeds'] = 0 # !@# XXX
+
+ if statistics['trackerPeers'] is not None:
+ totals = '%d/%d' % (statistics['trackerPeers'],
+ statistics['trackerSeeds'])
+ else:
+ totals = _("NA")
+ self.peer_info.set_value(statistics['numPeers'], num_seeds, totals)
+
+ self.up_curr.set_value(str(Size(statistics['upTotal'])))
+ self.down_curr.set_value(str(Size(statistics['downTotal'])))
+
+ self.up_prev.set_value(str(Size(self.uptotal)))
+ self.down_prev.set_value(str(Size(self.downtotal)))
+
+ # refresh extra info
+ self.piece_info.set_value(self.piece_count,
+ statistics['storage_numcomplete'],
+ statistics['storage_dirty'],
+ statistics['storage_active'],
+ statistics['storage_new'] )
+
+ self.dist_copies.set_value( statistics['numCopies'], ', '.join(["%d:%.1f%%" % (a, int(b*1000)/10) for a, b in zip(itertools.count(int(statistics['numCopies']+1)), statistics['numCopyList'])]))
+
+ self.bad_info.set_value(statistics['storage_numflunked'], Size(statistics['discarded']))
+
+ if self.peerlistwindow is not None:
+ if self.update_peer_list_flag == 0:
+ spew = statistics.get('spew')
+ if spew is not None:
+ self.peerlistwindow.update(spew, statistics['bad_peers'])
+ self.update_peer_list_flag = (self.update_peer_list_flag + 1) % 4
+ if self.filelistwindow is not None:
+ if 'files_left' in statistics:
+ self.filelistwindow.update(statistics['files_left'],
+ statistics['files_allocated'])
+
+
+class DroppableHSeparator(PaddedHSeparator):
+
+ def __init__(self, box, spacing=SPACING):
+ PaddedHSeparator.__init__(self, spacing)
+ self.box = box
+ self.main = box.main
+
+ self.drag_dest_set(gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+
+ self.connect('drag_data_received', self.drag_data_received)
+ self.connect('drag_motion' , self.drag_motion )
+
+ def drag_highlight(self):
+ self.sep.drag_highlight()
+ self.main.add_unhighlight_handle()
+
+ def drag_unhighlight(self):
+ self.sep.drag_unhighlight()
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+ if targetType == BT_TARGET_TYPE:
+ self.box.drop_on_separator(self, selection.data)
+ else:
+ self.main.accept_dropped_file(widget, context, x, y, selection, targetType, time)
+
+ def drag_motion(self, wid, context, x, y, time):
+ self.drag_highlight()
+ return False
+
+
+class DroppableBox(HSeparatedBox):
+ def __init__(self, main, spacing=0):
+ HSeparatedBox.__init__(self, spacing=spacing)
+ self.main = main
+ self.drag_dest_set(gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+ self.connect('drag_data_received', self.drag_data_received)
+ self.connect('drag_motion', self.drag_motion)
+
+ def drag_motion(self, widget, context, x, y, time):
+ return False
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+ pass
+
+
+class KnownBox(DroppableBox):
+
+ def __init__(self, main, spacing=0):
+ DroppableBox.__init__(self, main, spacing=spacing)
+ self.drag_dest_set(gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+
+ def pack_start(self, widget, *args, **kwargs):
+ old_len = len(self.get_children())
+ DroppableBox.pack_start(self, widget, *args, **kwargs)
+ if old_len <= 0:
+ self.main.maximize_known_pane()
+ self.main.knownscroll.scroll_to_bottom()
+
+ def remove(self, widget):
+ DroppableBox.remove(self, widget)
+ new_len = len(self.get_children())
+ if new_len == 0:
+ self.main.maximize_known_pane()
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+ if targetType == BT_TARGET_TYPE:
+ infohash = selection.data
+ self.main.finish(infohash)
+ else:
+ self.main.accept_dropped_file(widget, context, x, y, selection, targetType, time)
+
+ def drag_motion(self, widget, context, x, y, time):
+ self.main.drag_highlight(widget=self)
+
+ def drag_highlight(self):
+ self.main.knownscroll.drag_highlight()
+ self.main.add_unhighlight_handle()
+
+ def drag_unhighlight(self):
+ self.main.knownscroll.drag_unhighlight()
+
+
+class RunningAndQueueBox(gtk.VBox):
+
+ def __init__(self, main, **kwargs):
+ gtk.VBox.__init__(self, **kwargs)
+ self.main = main
+
+ def drop_on_separator(self, sep, infohash):
+ self.main.change_torrent_state(infohash, QUEUED, 0)
+
+ def highlight_between(self):
+ self.drag_highlight()
+
+ def drag_highlight(self):
+ self.get_children()[1].drag_highlight()
+
+ def drag_unhighlight(self):
+ self.get_children()[1].drag_unhighlight()
+
+
+class SpacerBox(DroppableBox):
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+ if targetType == BT_TARGET_TYPE:
+ infohash = selection.data
+ self.main.queuebox.put_infohash_last(infohash)
+ else:
+ self.main.accept_dropped_file(widget, context, x, y, selection, targetType, time)
+
+ return True
+
+BEFORE = -1
+AFTER = 1
+
+class ReorderableBox(DroppableBox):
+
+ def new_separator(self):
+ return DroppableHSeparator(self)
+
+ def __init__(self, main):
+ DroppableBox.__init__(self, main)
+ self.main = main
+
+ self.drag_dest_set(gtk.DEST_DEFAULT_DROP,
+ TARGET_ALL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+
+ self.connect('drag_data_received', self.drag_data_received)
+ self.connect('drag_motion' , self.drag_motion)
+
+ def drag_data_received(self, widget, context, x, y, selection, targetType, time):
+
+ if targetType == BT_TARGET_TYPE:
+ half_height = self.size_request()[1] // 2
+ if y < half_height:
+ self.put_infohash_first(selection.data)
+ else:
+ self.put_infohash_last(selection.data)
+ else:
+ self.main.accept_dropped_file(widget, context, x, y, selection, targetType, time)
+ return True
+
+ def drag_motion(self, widget, context, x, y, time):
+ return False
+
+ def drag_highlight(self):
+ final = self.get_children()[-1]
+ final.drag_highlight()
+ self.main.add_unhighlight_handle()
+
+ def drag_unhighlight(self):
+ self.highlight_child(index=None)
+ self.parent.drag_unhighlight()
+
+ def highlight_before_index(self, index):
+ self.drag_unhighlight()
+ children = self._get_children()
+ if index > 0:
+ children[index*2 - 1].drag_highlight()
+ else:
+ self.highlight_at_top()
+
+ def highlight_after_index(self, index):
+ self.drag_unhighlight()
+ children = self._get_children()
+ if index*2 < len(children)-1:
+ children[index*2 + 1].drag_highlight()
+ else:
+ self.highlight_at_bottom()
+
+ def highlight_child(self, index=None):
+ for i, child in enumerate(self._get_children()):
+ if index is not None and i == index*2:
+ child.drag_highlight()
+ else:
+ child.drag_unhighlight()
+
+
+ def drop_on_separator(self, sep, infohash):
+ children = self._get_children()
+ for i, child in enumerate(children):
+ if child == sep:
+ reference_child = children[i-1]
+ self.put_infohash_at_child(infohash, reference_child, AFTER)
+ break
+
+
+ def get_queue(self):
+ queue = []
+ c = self.get_children()
+ for t in c:
+ queue.append(t.infohash)
+ return queue
+
+ def put_infohash_first(self, infohash):
+ self.highlight_child()
+ children = self.get_children()
+ if len(children) > 1 and infohash == children[0].infohash:
+ return
+
+ self.put_infohash_at_index(infohash, 0)
+
+ def put_infohash_last(self, infohash):
+ self.highlight_child()
+ children = self.get_children()
+ end = len(children)
+ if len(children) > 1 and infohash == children[end-1].infohash:
+ return
+
+ self.put_infohash_at_index(infohash, end)
+
+ def put_infohash_at_child(self, infohash, reference_child, where):
+ self.highlight_child()
+ if infohash == reference_child.infohash:
+ return
+
+ target_index = self.get_index_from_child(reference_child)
+ if where == AFTER:
+ target_index += 1
+ self.put_infohash_at_index(infohash, target_index)
+
+ def get_index_from_child(self, child):
+ c = self.get_children()
+ ret = -1
+ try:
+ ret = c.index(child)
+ except ValueError:
+ pass
+ return ret
+
+ def highlight_at_top(self):
+ raise NotImplementedError
+
+ def highlight_at_bottom(self):
+ raise NotImplementedError
+
+ def put_infohash_at_index(self, infohash, end):
+ raise NotImplementedError
+
+class RunningBox(ReorderableBox):
+
+ def put_infohash_at_index(self, infohash, target_index):
+ #print 'RunningBox.put_infohash_at_index', infohash.encode('hex')[:8], target_index
+
+ l = self.get_queue()
+ replaced = None
+ if l:
+ replaced = l[-1]
+ self.main.confirm_replace_running_torrent(infohash, replaced,
+ target_index)
+
+ def highlight_at_top(self):
+ pass
+ # BUG: Don't know how I will indicate in the UI that the top of the list is highlighted
+
+ def highlight_at_bottom(self):
+ self.parent.highlight_between()
+
+
+class QueuedBox(ReorderableBox):
+
+ def put_infohash_at_index(self, infohash, target_index):
+ #print 'want to put', infohash.encode('hex'), 'at', target_index
+ self.main.change_torrent_state(infohash, QUEUED, target_index)
+
+ def highlight_at_top(self):
+ self.parent.highlight_between()
+
+ def highlight_at_bottom(self):
+ pass
+ # BUG: Don't know how I will indicate in the UI that the bottom of the list is highlighted
+
+
+
+class Struct(object):
+ pass
+
+
+class SearchField(gtk.Entry):
+ def __init__(self, default_text, visit_url_func):
+ gtk.Entry.__init__(self)
+ self.default_text = default_text
+ self.visit_url_func = visit_url_func
+ self.set_text(self.default_text)
+ self.set_size_request(150, -1)
+
+ # default gtk Entry dnd processing is broken on linux!
+ # - default Motion handling causes asyncs
+ # - there's no way to filter the default text dnd
+ # see the parent window for a very painful work-around
+ self.drag_dest_unset()
+
+ self.connect('key-press-event', self.check_for_enter)
+ self.connect('button-press-event', self.begin_edit)
+ self.search_completion = gtk.EntryCompletion()
+ self.search_completion.set_text_column(0)
+ self.search_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.search_completion.set_model(self.search_store)
+ self.set_completion(self.search_completion)
+ self.reset_text()
+ self.timeout_id = None
+
+ def begin_edit(self, *args):
+ if self.get_text() == self.default_text:
+ self.set_text('')
+
+ def check_for_enter(self, widget, event):
+ if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
+ self.search()
+
+ def reset_text(self):
+ self.set_text(self.default_text)
+
+ def search(self, *args):
+ search_term = self.get_text()
+ if search_term and search_term != self.default_text:
+ self.search_store.append([search_term])
+ search_url = SEARCH_URL % {'query' :zurllib.quote(search_term),
+ 'client':'M-%s'%version.replace('.','-')}
+
+ self.timeout_id = gobject.timeout_add(2000, self.resensitize)
+ self.set_sensitive(False)
+ self.visit_url_func(search_url, callback=self.resensitize)
+ else:
+ self.reset_text()
+ self.select_region(0, -1)
+ self.grab_focus()
+
+ def resensitize(self):
+ self.set_sensitive(True)
+ self.reset_text()
+ if self.timeout_id is not None:
+ gobject.source_remove(self.timeout_id)
+ self.timeout_id = None
+
+
+class DownloadInfoFrame(object):
+
+ def __init__(self, config, torrentqueue):
+ self.config = config
+ if self.config['save_in'] == '':
+ self.config['save_in'] = smart_dir('')
+
+ self.torrentqueue = torrentqueue
+ self.torrents = {}
+ self.running_torrents = {}
+ self.lists = {}
+ self.update_handle = None
+ self.unhighlight_handle = None
+ self.custom_size = False
+ self.child_windows = {}
+ self.postponed_save_windows = []
+ self.helpwindow = None
+ self.errordialog = None
+
+ self.mainwindow = Window(gtk.WINDOW_TOPLEVEL)
+
+ #tray icon
+ self.trayicon = TrayIcon(not self.config['start_minimized'],
+ toggle_func=self.toggle_shown,
+ quit_func=self.quit)
+ self.traythread = threading.Thread(target=self.trayicon.enable,
+ args=())
+ self.traythread.setDaemon(True)
+
+ if os.name == "nt":
+ # gtk has no way to check this?
+ self.iconized = False
+ self.mainwindow.connect('window-state-event', self.window_event)
+
+ if self.config['start_minimized']:
+ self.mainwindow.iconify()
+
+ gtk.threads_enter()
+
+ self.mainwindow.set_border_width(0)
+
+ self.set_seen_remote_connections(False)
+ self.set_seen_connections(False)
+
+ self.mainwindow.drag_dest_set(gtk.DEST_DEFAULT_ALL,
+ TARGET_EXTERNAL,
+ gtk.gdk.ACTION_MOVE|gtk.gdk.ACTION_COPY)
+
+ self.mainwindow.connect('drag_leave' , self.drag_leave )
+ self.mainwindow.connect('drag_data_received', self.accept_dropped_file)
+
+ self.mainwindow.set_size_request(WINDOW_WIDTH, -1)
+
+ self.mainwindow.connect('destroy', self.cancel)
+
+ self.mainwindow.connect('size-allocate', self.size_was_allocated)
+
+ self.accel_group = gtk.AccelGroup()
+
+ self.mainwindow.add_accel_group(self.accel_group)
+
+ #self.accel_group.connect(ord('W'), gtk.gdk.CONTROL_MASK, gtk.ACCEL_LOCKED,
+ # lambda *args: self.mainwindow.destroy())
+
+ self.tooltips = gtk.Tooltips()
+
+ self.logbuffer = LogBuffer()
+ self.log_text(_("%s started")%app_name, severity=None)
+
+ self.box1 = gtk.VBox(homogeneous=False, spacing=0)
+
+ self.box2 = gtk.VBox(homogeneous=False, spacing=0)
+ self.box2.set_border_width(SPACING)
+
+ self.menubar = gtk.MenuBar()
+ self.box1.pack_start(self.menubar, expand=False, fill=False)
+
+ self.ssbutton = StopStartButton(self)
+
+ # keystrokes used: A D F H L N O P Q S U X (E)
+
+ quit_menu_label = _("_Quit")
+ if os.name == 'nt':
+ quit_menu_label = _("E_xit")
+
+ file_menu_items = ((_("_Open torrent file"), self.select_torrent_to_open),
+ (_("Open torrent _URL"), self.enter_url_to_open),
+ (_("Make _new torrent" ), self.make_new_torrent),
+
+ ('----' , None),
+ (_("_Pause/Play"), self.ssbutton.toggle),
+ ('----' , None),
+ (quit_menu_label , lambda w: self.mainwindow.destroy()),
+ )
+ view_menu_items = ((_("Show/Hide _finished torrents"), self.toggle_known),
+ # BUG: if you reorder this menu, see def set_custom_size() first
+ (_("_Resize window to fit"), lambda w: self.resize_to_fit()),
+ ('----' , None),
+ (_("_Log") , lambda w: self.open_window('log')),
+ # 'View log of all download activity',
+ #('----' , None),
+ (_("_Settings") , lambda w: self.open_window('settings')),
+ #'Change download behavior and network settings',
+ )
+ help_menu_items = ((_("_Help") , self.open_help),
+ #(_("_Help Window") , lambda w: self.open_window('help')),
+ (_("_About") , lambda w: self.open_window('about')),
+ (_("_Donate") , lambda w: self.donate()),
+ #(_("Rais_e") , lambda w: self.raiseerror()),
+ )
+
+ self.filemenu = gtk.MenuItem(_("_File"))
+
+ self.filemenu.set_submenu(build_menu(file_menu_items, self.accel_group))
+ self.filemenu.show()
+
+ self.viewmenu = gtk.MenuItem(_("_View"))
+ self.viewmenu.set_submenu(build_menu(view_menu_items, self.accel_group))
+ self.viewmenu.show()
+
+ self.helpmenu = gtk.MenuItem(_("_Help"))
+ self.helpmenu.set_submenu(build_menu(help_menu_items, self.accel_group))
+ self.helpmenu.show()
+
+ if os.name != 'nt':
+ self.helpmenu.set_right_justified(True)
+
+ self.menubar.append(self.filemenu)
+ self.menubar.append(self.viewmenu)
+ self.menubar.append(self.helpmenu)
+
+ self.menubar.show()
+
+ self.header = gtk.HBox(homogeneous=False)
+
+ self.box1.pack_start(self.box2, expand=False, fill=False)
+
+ # control box: rate slider, start-stop button, search widget, status light
+ self.controlbox = gtk.HBox(homogeneous=False)
+
+ controlbox_padding = SPACING//2
+
+ # stop-start button
+ self.controlbox.pack_start(malign(self.ssbutton),
+ expand=False, fill=False)
+
+ # rate slider
+ self.rate_slider_box = RateSliderBox(self.config, self.torrentqueue)
+ self.controlbox.pack_start(self.rate_slider_box,
+ expand=True, fill=True,
+ padding=controlbox_padding)
+
+ self.controlbox.pack_start(gtk.VSeparator(), expand=False, fill=False,
+ padding=controlbox_padding)
+
+ # search box
+ self.search_field = SearchField(_("Search for torrents"), self.visit_url)
+ sfa = gtk.Alignment(xalign=0, yalign=0.5, xscale=1, yscale=0)
+ sfa.add(self.search_field)
+ self.controlbox.pack_start(sfa,
+ expand=False, fill=False, padding=controlbox_padding)
+
+ # separator
+ self.controlbox.pack_start(gtk.VSeparator(), expand=False, fill=False,
+ padding=controlbox_padding)
+
+ # status light
+ self.status_light = StatusLight(self)
+
+ self.controlbox.pack_start(malign(self.status_light),
+ expand=False, fill=False)
+
+ self.box2.pack_start(self.controlbox,
+ expand=False, fill=False, padding=0)
+ # end control box
+
+ self.paned = gtk.VPaned()
+
+ self.knownscroll = ScrolledWindow()
+ self.knownscroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.knownscroll.set_shadow_type(gtk.SHADOW_NONE)
+ self.knownscroll.set_size_request(-1, SPACING)
+
+ self.knownbox = KnownBox(self)
+ self.knownbox.set_border_width(SPACING)
+
+ self.knownscroll.add_with_viewport(self.knownbox)
+ self.paned.pack1(self.knownscroll, resize=False, shrink=True)
+
+
+ self.mainscroll = AutoScrollingWindow()
+ self.mainscroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.mainscroll.set_shadow_type(gtk.SHADOW_NONE)
+ self.mainscroll.set_size_request(-1, SPACING)
+
+ self.scrollbox = RunningAndQueueBox(self, homogeneous=False)
+ self.scrollbox.set_border_width(SPACING)
+
+ self.runbox = RunningBox(self)
+ self.scrollbox.pack_start(self.runbox, expand=False, fill=False)
+
+ self.scrollbox.pack_start(DroppableHSeparator(self.scrollbox), expand=False, fill=False)
+
+ self.queuebox = QueuedBox(self)
+ self.scrollbox.pack_start(self.queuebox, expand=False, fill=False)
+
+ self.scrollbox.pack_start(SpacerBox(self), expand=True, fill=True)
+
+ self.mainscroll.add_with_viewport(self.scrollbox)
+
+ self.paned.pack2(self.mainscroll, resize=True, shrink=False)
+
+ self.box1.pack_start(self.paned)
+
+ self.box1.show_all()
+
+ self.mainwindow.add(self.box1)
+
+ self.set_title()
+ self.set_size()
+
+ self.mainwindow.show()
+
+ self.paned.set_position(0)
+ self.search_field.grab_focus()
+
+ self.updater = NewVersion.Updater(
+ gtk_wrap,
+ self.new_version,
+ self.torrentqueue.start_new_torrent,
+ self.confirm_install_new_version ,
+ self.global_error ,
+ self.config['new_version'] ,
+ self.config['current_version'] )
+
+ self.nag()
+
+ gtk.threads_leave()
+
+ def window_event(self, widget, event, *args):
+ if event.changed_mask == gtk.gdk.WINDOW_STATE_ICONIFIED:
+ if self.config['minimize_to_tray']:
+ if self.iconized == False:
+ self.mainwindow.hide()
+ self.trayicon.set_toggle_state(self.iconized)
+ self.iconized = not self.iconized
+
+ def drag_leave(self, *args):
+ self.drag_end()
+
+ def make_new_torrent(self, widget=None):
+ btspawn(self.torrentqueue, 'maketorrent')
+
+ def accept_dropped_file(self, widget, context, x, y, selection,
+ targetType, time):
+ if targetType == EXTERNAL_FILE_TYPE:
+ d = selection.data.strip()
+ file_uris = d.split('\r\n')
+ for file_uri in file_uris:
+ # this catches non-url entries, I've seen "\x00" at the end of lists
+ if file_uri.find(':/') != -1:
+ file_name = zurllib.url2pathname(file_uri)
+ file_name = file_name[7:]
+ if os.name == 'nt':
+ file_name = file_name.strip('\\')
+ self.open_torrent( file_name )
+ elif targetType == EXTERNAL_STRING_TYPE:
+
+ data = selection.data.strip()
+
+ # size must be > 0,0 for the intersection code to register it
+ drop_rect = gtk.gdk.Rectangle(x, y, 1, 1)
+ if ((self.search_field.intersect(drop_rect) is not None) and
+ (not data.lower().endswith(".torrent"))):
+
+ client_point = self.mainwindow.translate_coordinates(self.search_field, x, y)
+ layout_offset = self.search_field.get_layout_offsets()
+ point = []
+ # subtract (not add) the offset, because we're hit-testing the layout, not the widget
+ point.append(client_point[0] - layout_offset[0])
+ point.append(client_point[1] - layout_offset[1])
+ # ha ha ha. pango is so ridiculous
+ point[0] *= pango.SCALE
+ point[1] *= pango.SCALE
+ layout = self.search_field.get_layout()
+ position = layout.xy_to_index(*point)
+ self.search_field.insert_text(data, position[0])
+ else:
+ self.open_url(data)
+
+ def drag_highlight(self, widget=None):
+ widgets = (self.knownbox, self.runbox, self.queuebox)
+ for w in widgets:
+ if w != widget:
+ w.drag_unhighlight()
+ for w in widgets:
+ if w == widget:
+ w.drag_highlight()
+ self.add_unhighlight_handle()
+
+ def drag_end(self):
+ self.drag_highlight(widget=None)
+ self.mainscroll.stop_scrolling()
+
+ def set_title(self, torrentName=None, fractionDone=None):
+ title = app_name
+ trunc = '...'
+ sep = ': '
+
+ if self.config['pause']:
+ title += sep+_("(stopped)")
+ elif len(self.running_torrents) == 1 and torrentName and \
+ fractionDone is not None:
+ maxlen = WINDOW_TITLE_LENGTH - len(app_name) - len(trunc) - len(sep)
+ if len(torrentName) > maxlen:
+ torrentName = torrentName[:maxlen] + trunc
+ title = '%s%s%0.1f%%%s%s'% (app_name,
+ sep,
+ (int(fractionDone*1000)/10),
+ sep,
+ torrentName)
+ elif len(self.running_torrents) > 1:
+ title += sep+_("(multiple)")
+
+ if self.mainwindow.get_title() != title:
+ self.mainwindow.set_title(title)
+ if self.trayicon.get_tooltip() != title:
+ self.trayicon.set_tooltip(title)
+
+ def _guess_size(self):
+ paned_height = self.scrollbox.size_request()[1]
+ if hasattr(self.paned, 'style_get_property'):
+ paned_height += self.paned.style_get_property('handle-size')
+ else:
+ paned_height += 5
+ paned_height += self.paned.get_position()
+ paned_height += 4 # fudge factor, probably from scrolled window beveling ?
+ paned_height = max(paned_height, MIN_MULTI_PANE_HEIGHT)
+
+ new_height = self.menubar.size_request()[1] + \
+ self.box2.size_request()[1] + \
+ paned_height
+ new_height = min(new_height, MAX_WINDOW_HEIGHT)
+ new_width = max(self.scrollbox.size_request()[0] + SCROLLBAR_WIDTH, WINDOW_WIDTH)
+ return new_width, new_height
+
+ def set_size(self):
+ if not self.custom_size:
+ self.mainwindow.resize(*self._guess_size())
+
+ def size_was_allocated(self, *args):
+ current_size = self.mainwindow.get_size()
+ target_size = self._guess_size()
+ if current_size == target_size:
+ self.set_custom_size(False)
+ else:
+ self.set_custom_size(True)
+
+ def resize_to_fit(self):
+ self.set_custom_size(False)
+ self.set_size()
+
+ def set_custom_size(self, val):
+ self.custom_size = val
+ # BUG this is a hack:
+ self.viewmenu.get_submenu().get_children()[1].set_sensitive(val)
+
+ # BUG need to add handler on resize event to keep track of
+ # old_position when pane is hidden manually
+ def split_pane(self):
+ pos = self.paned.get_position()
+ if pos > 0:
+ self.paned.old_position = pos
+ self.paned.set_position(0)
+ else:
+ if hasattr(self.paned, 'old_position'):
+ self.paned.set_position(self.paned.old_position)
+ else:
+ self.maximize_known_pane()
+
+ def maximize_known_pane(self):
+ self.set_pane_position(self.knownbox.size_request()[1])
+
+ def set_pane_position(self, pane_position):
+ pane_position = min(MAX_WINDOW_HEIGHT//2, pane_position)
+ self.paned.set_position(pane_position)
+
+ def toggle_known(self, widget=None):
+ self.split_pane()
+
+ def open_window(self, window_name, *args, **kwargs):
+ if os.name == 'nt':
+ self.mainwindow.present()
+ savewidget = SaveFileSelection
+ if window_name == 'savedir':
+ savewidget = CreateFolderSelection
+ window_name = 'savefile'
+ if self.child_windows.has_key(window_name):
+ if window_name == 'savefile':
+ kwargs['show'] = False
+ self.postponed_save_windows.append(savewidget(self, **kwargs))
+ return
+
+ if window_name == 'log' :
+ self.child_windows[window_name] = LogWindow(self, self.logbuffer, self.config)
+ elif window_name == 'about' :
+ self.child_windows[window_name] = AboutWindow(self, lambda w: self.donate())
+ elif window_name == 'help' :
+ self.child_windows[window_name] = HelpWindow(self, makeHelp('bittorrent', defaults))
+ elif window_name == 'settings':
+ self.child_windows[window_name] = SettingsWindow(self, self.config, self.set_config)
+ elif window_name == 'version' :
+ self.child_windows[window_name] = VersionWindow(self, *args)
+ elif window_name == 'openfile':
+ self.child_windows[window_name] = OpenFileSelection(self, **kwargs)
+ elif window_name == 'savefile':
+ self.child_windows[window_name] = savewidget(self, **kwargs)
+ elif window_name == 'choosefolder':
+ self.child_windows[window_name] = ChooseFolderSelection(self, **kwargs)
+ elif window_name == 'enterurl':
+ self.child_windows[window_name] = EnterUrlDialog(self, **kwargs)
+
+ return self.child_windows[window_name]
+
+ def window_closed(self, window_name):
+ if self.child_windows.has_key(window_name):
+ del self.child_windows[window_name]
+ if window_name == 'savefile' and self.postponed_save_windows:
+ newwin = self.postponed_save_windows.pop(-1)
+ newwin.show()
+ self.child_windows['savefile'] = newwin
+
+ def close_window(self, window_name):
+ self.child_windows[window_name].close(None)
+
+ def new_version(self, newversion, download_url):
+ if not self.config['notified'] or \
+ newversion != NewVersion.Version.from_str(self.config['notified']):
+ if not self.torrents.has_key(self.updater.infohash):
+ self.open_window('version', newversion, download_url)
+ else:
+ dlpath = os.path.split(self.torrents[self.updater.infohash].dlpath)[0]
+ self.updater.set_installer_dir(dlpath)
+ self.updater.start_install()
+
+ def check_version(self):
+ self.updater.check()
+
+ def start_auto_update(self):
+ if not self.torrents.has_key(self.updater.infohash):
+ self.updater.download()
+ else:
+ self.global_error(INFO, _("Already downloading %s installer") % self.updater.version)
+
+ def confirm_install_new_version(self):
+ MessageDialog(self.mainwindow,
+ _("Install new %s now?")%app_name,
+ _("Do you want to quit %s and install the new version, "
+ "%s, now?")%(app_name,self.updater.version),
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_YES_NO,
+ yesfunc=self.install_new_version,
+ nofunc=None,
+ default=gtk.RESPONSE_YES
+ )
+
+ def install_new_version(self):
+ self.updater.launch_installer(self.torrentqueue)
+ self.cancel()
+
+
+ def open_help(self,widget):
+ if self.helpwindow is None:
+ msg = (_("%s help is at \n%s\nWould you like to go there now?")%
+ (app_name, HELP_URL))
+ self.helpwindow = MessageDialog(self.mainwindow,
+ _("Visit help web page?"),
+ msg,
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_OK_CANCEL,
+ yesfunc=self.visit_help,
+ nofunc =self.help_closed,
+ default=gtk.RESPONSE_OK
+ )
+
+ def visit_help(self):
+ self.visit_url(HELP_URL)
+ self.help_closed()
+
+ def close_help(self):
+ self.helpwindow.close()
+
+ def help_closed(self, widget=None):
+ self.helpwindow = None
+
+
+ def set_config(self, option, value):
+ self.config[option] = value
+ if option == 'display_interval':
+ self.init_updates()
+ self.torrentqueue.set_config(option, value)
+
+
+ def confirm_remove_finished_torrents(self,widget):
+ count = 0
+ for infohash, t in self.torrents.iteritems():
+ if t.state == KNOWN and t.completion >= 1:
+ count += 1
+ if count:
+ if self.paned.get_position() == 0:
+ self.toggle_known()
+ msg = ''
+ if count == 1:
+ msg = _("There is one finished torrent in the list. ") + \
+ _("Do you want to remove it?")
+ else:
+ msg = _("There are %d finished torrents in the list. ") % count +\
+ _("Do you want to remove all of them?")
+ MessageDialog(self.mainwindow,
+ _("Remove all finished torrents?"),
+ msg,
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_OK_CANCEL,
+ yesfunc=self.remove_finished_torrents,
+ default=gtk.RESPONSE_OK)
+ else:
+ MessageDialog(self.mainwindow,
+ _("No finished torrents"),
+ _("There are no finished torrents to remove."),
+ type=gtk.MESSAGE_INFO,
+ default=gtk.RESPONSE_OK)
+
+ def remove_finished_torrents(self):
+ for infohash, t in self.torrents.iteritems():
+ if t.state == KNOWN and t.completion >= 1:
+ self.torrentqueue.remove_torrent(infohash)
+ if self.paned.get_position() > 0:
+ self.toggle_known()
+
+ def cancel(self, widget=None):
+ for window_name in self.child_windows.keys():
+ self.close_window(window_name)
+
+ if self.errordialog is not None:
+ self.errordialog.destroy()
+ self.errors_closed()
+
+ for t in self.torrents.itervalues():
+ if t.widget is not None:
+ t.widget.close_child_windows()
+
+ self.torrentqueue.set_done()
+ gtk.main_quit()
+
+ # Currently called if the user started bittorrent from a terminal
+ # and presses ctrl-c there, or if the user quits BitTorrent from
+ # the tray icon (on windows)
+ def quit(self):
+ self.mainwindow.destroy()
+
+ def make_statusrequest(self):
+ if self.config['pause']:
+ return True
+ for infohash, t in self.running_torrents.iteritems():
+ self.torrentqueue.request_status(infohash, t.widget.peerlistwindow
+ is not None, t.widget.filelistwindow is not None)
+ if not len(self.running_torrents):
+ self.status_light.send_message('empty')
+ return True
+
+ def enter_url_to_open(self, widget):
+ self.open_window('enterurl')
+
+ def open_url(self, url):
+ self.torrentqueue.start_new_torrent_by_name(url)
+
+ def select_torrent_to_open(self, widget):
+ open_location = self.config['open_from']
+ if not open_location:
+ open_location = self.config['save_in']
+ path = smart_dir(open_location)
+ self.open_window('openfile',
+ title=_("Open torrent:"),
+ fullname=path,
+ got_location_func=self.open_torrent,
+ no_location_func=lambda: self.window_closed('openfile'))
+
+
+ def open_torrent(self, name):
+ self.window_closed('openfile')
+ open_location = os.path.split(name)[0]
+ if open_location[-1] != os.sep:
+ open_location += os.sep
+ self.set_config('open_from', open_location)
+
+ self.torrentqueue.start_new_torrent_by_name(name)
+
+ def change_save_location(self, infohash):
+ def no_location():
+ self.window_closed('savefile')
+
+ t = self.torrents[infohash]
+ metainfo = t.metainfo
+
+ selector = self.open_window(metainfo.is_batch and 'savedir' or \
+ 'savefile',
+ title=_("Change save location for ") + metainfo.name,
+ fullname=t.dlpath,
+ got_location_func = \
+ lambda fn: self.got_changed_location(infohash, fn),
+ no_location_func=no_location)
+
+ def got_changed_location(self, infohash, fullpath):
+ self.window_closed('savefile')
+ self.torrentqueue.set_save_location(infohash, fullpath)
+
+ def save_location(self, infohash, metainfo):
+ name = metainfo.name_fs
+
+ if self.config['save_as'] and \
+ os.access(os.path.split(self.config['save_as'])[0], os.W_OK):
+ path = self.config['save_as']
+ self.got_location(infohash, path, store_in_config=False)
+ self.config['save_as'] = ''
+ return
+
+ path = smart_dir(self.config['save_in'])
+
+ fullname = os.path.join(path, name)
+
+ if not self.config['ask_for_save']:
+ if os.access(fullname, os.F_OK):
+ message = MessageDialog(self.mainwindow,
+ _("File exists!"),
+ _('"%s" already exists. '
+ "Do you want to choose a different file name?") % path_wrap(name),
+ buttons=gtk.BUTTONS_YES_NO,
+ nofunc= lambda : self.got_location(infohash, fullname),
+ yesfunc=lambda : self.get_save_location(infohash, metainfo, fullname),
+ default=gtk.RESPONSE_NO)
+
+ else:
+ self.got_location(infohash, fullname)
+ else:
+ self.get_save_location(infohash, metainfo, fullname)
+
+ def get_save_location(self, infohash, metainfo, fullname):
+ def no_location():
+ self.window_closed('savefile')
+ self.torrentqueue.remove_torrent(infohash)
+
+ selector = self.open_window(metainfo.is_batch and 'savedir' or \
+ 'savefile',
+ title=_("Save location for ") + metainfo.name,
+ fullname=fullname,
+ got_location_func = lambda fn: \
+ self.got_location(infohash, fn),
+ no_location_func=no_location)
+
+ self.torrents[infohash].widget = selector
+
+ def got_location(self, infohash, fullpath, store_in_config=True):
+ self.window_closed('savefile')
+ self.torrents[infohash].widget = None
+ save_in = os.path.split(fullpath)[0]
+
+ metainfo = self.torrents[infohash].metainfo
+ if metainfo.is_batch:
+ bottom_dirs, top_dir_name = os.path.split(save_in)
+ if metainfo.name_fs == top_dir_name:
+
+ message = MessageDialog(self.mainwindow, _("Directory exists!"),
+ _('"%s" already exists.'\
+ " Do you intend to create an identical,"\
+ " duplicate directory inside the existing"\
+ " directory?")%path_wrap(save_in),
+ buttons=gtk.BUTTONS_YES_NO,
+ nofunc =lambda : self.got_location(infohash, save_in ),
+ yesfunc=lambda : self._got_location(infohash, save_in, fullpath, store_in_config=store_in_config),
+ default=gtk.RESPONSE_NO,
+ )
+ return
+ self._got_location(infohash, save_in, fullpath, store_in_config=store_in_config)
+
+ def _got_location(self, infohash, save_in, fullpath, store_in_config=True):
+ if store_in_config:
+ if save_in[-1] != os.sep:
+ save_in += os.sep
+ self.set_config('save_in', save_in)
+ self.torrents[infohash].dlpath = fullpath
+ self.torrentqueue.set_save_location(infohash, fullpath)
+
+ def add_unhighlight_handle(self):
+ if self.unhighlight_handle is not None:
+ gobject.source_remove(self.unhighlight_handle)
+
+ self.unhighlight_handle = gobject.timeout_add(2000,
+ self.unhighlight_after_a_while,
+ priority=gobject.PRIORITY_LOW)
+
+ def unhighlight_after_a_while(self):
+ self.drag_highlight()
+ gobject.source_remove(self.unhighlight_handle)
+ self.unhighlight_handle = None
+ return False
+
+ def init_updates(self):
+ if self.update_handle is not None:
+ gobject.source_remove(self.update_handle)
+ self.update_handle = gobject.timeout_add(
+ int(self.config['display_interval'] * 1000),
+ self.make_statusrequest)
+
+ def remove_torrent_widget(self, infohash):
+ t = self.torrents[infohash]
+ self.lists[t.state].remove(infohash)
+ if t.state == RUNNING:
+ del self.running_torrents[infohash]
+ self.set_title()
+ if t.state == ASKING_LOCATION:
+ if t.widget is not None:
+ t.widget.destroy()
+ return
+
+ if t.state in (KNOWN, RUNNING, QUEUED):
+ t.widget.close_child_windows()
+
+ if t.state == RUNNING:
+ self.runbox.remove(t.widget)
+ elif t.state == QUEUED:
+ self.queuebox.remove(t.widget)
+ elif t.state == KNOWN:
+ self.knownbox.remove(t.widget)
+
+ t.widget.destroy()
+
+ self.set_size()
+
+ def create_torrent_widget(self, infohash, queuepos=None):
+ t = self.torrents[infohash]
+ l = self.lists.setdefault(t.state, [])
+ if queuepos is None:
+ l.append(infohash)
+ else:
+ l.insert(queuepos, infohash)
+ if t.state == ASKING_LOCATION:
+ self.save_location(infohash, t.metainfo)
+ self.nag()
+ return
+ elif t.state == RUNNING:
+ self.running_torrents[infohash] = t
+ if not self.config['pause']:
+ t.widget = RunningTorrentBox(infohash, t.metainfo, t.dlpath,
+ t.completion, self)
+ else:
+ t.widget = PausedTorrentBox(infohash, t.metainfo, t.dlpath,
+ t.completion, self)
+ box = self.runbox
+ elif t.state == QUEUED:
+ t.widget = QueuedTorrentBox(infohash, t.metainfo, t.dlpath,
+ t.completion, self)
+ box = self.queuebox
+ elif t.state == KNOWN:
+ t.widget = KnownTorrentBox(infohash, t.metainfo, t.dlpath,
+ t.completion, self)
+ box = self.knownbox
+ box.pack_start(t.widget, expand=False, fill=False)
+ if queuepos is not None:
+ box.reorder_child(t.widget, queuepos)
+
+ self.set_size()
+
+ def log_text(self, text, severity=ERROR):
+ self.logbuffer.log_text(text, severity)
+ if self.child_windows.has_key('log'):
+ self.child_windows['log'].scroll_to_end()
+
+ def _error(self, severity, err_str):
+ err_str = err_str.decode('utf-8', 'replace').encode('utf-8')
+ err_str = err_str.strip()
+ if severity >= ERROR:
+ self.error_modal(err_str)
+ self.log_text(err_str, severity)
+
+ def error(self, infohash, severity, text):
+ if self.torrents.has_key(infohash):
+ name = self.torrents[infohash].metainfo.name
+ err_str = '"%s" : %s'%(name,text)
+ self._error(severity, err_str)
+ else:
+ ihex = infohash.encode('hex')
+ err_str = '"%s" : %s'%(ihex,text)
+ self._error(severity, err_str)
+ self._error(WARNING, 'Previous error raised for invalid infohash: "%s"' % ihex)
+
+ def global_error(self, severity, text):
+ err_str = _("(global message) : %s")%text
+ self._error(severity, err_str)
+
+ def error_modal(self, text):
+ if self.child_windows.has_key('log'):
+ return
+
+ title = _("%s Error") % app_name
+
+ if self.errordialog is not None:
+ if not self.errordialog.multi:
+ self.errordialog.destroy()
+ self.errordialog = MessageDialog(self.mainwindow, title,
+ _("Multiple errors have occurred. "
+ "Click OK to view the error log."),
+ buttons=gtk.BUTTONS_OK_CANCEL,
+ yesfunc=self.multiple_errors_yes,
+ nofunc=self.errors_closed,
+ default=gtk.RESPONSE_OK
+ )
+ self.errordialog.multi = True
+ else:
+ # already showing the multi error dialog, so do nothing
+ pass
+ else:
+ self.errordialog = MessageDialog(self.mainwindow, title, text,
+ yesfunc=self.errors_closed,
+ default=gtk.RESPONSE_OK)
+ self.errordialog.multi = False
+
+
+ def multiple_errors_yes(self):
+ self.errors_closed()
+ self.open_window('log')
+
+ def errors_closed(self):
+ self.errordialog = None
+
+ def open_log(self):
+ self.open_window('log')
+
+ def stop_queue(self):
+ self.set_config('pause', True)
+ self.set_title()
+ self.status_light.send_message('stop')
+ self.set_seen_remote_connections(False)
+ self.set_seen_connections(False)
+ q = list(self.runbox.get_queue())
+ for infohash in q:
+ t = self.torrents[infohash]
+ self.remove_torrent_widget(infohash)
+ self.create_torrent_widget(infohash)
+
+ def restart_queue(self):
+ self.set_config('pause', False)
+ q = list(self.runbox.get_queue())
+ for infohash in q:
+ t = self.torrents[infohash]
+ self.remove_torrent_widget(infohash)
+ self.create_torrent_widget(infohash)
+ self.start_status_light()
+
+ def start_status_light(self):
+ if len(self.running_torrents):
+ self.status_light.send_message('start')
+ else:
+ self.status_light.send_message('empty')
+
+ def update_status(self, torrent, statistics):
+ if self.config['pause']:
+ self.status_light.send_message('start')
+ return
+
+ if self.seen_remote_connections:
+ self.status_light.send_message('seen_remote_peers')
+ elif self.seen_connections:
+ self.status_light.send_message('seen_peers')
+ else:
+ self.start_status_light()
+
+ self.running_torrents[torrent].widget.update_status(statistics)
+ if statistics.get('numPeers'):
+ self.set_seen_connections(seen=True)
+ if (not self.seen_remote_connections and
+ statistics.get('ever_got_incoming')):
+ self.set_seen_remote_connections(seen=True)
+ if self.updater is not None:
+ updater_infohash = self.updater.infohash
+ if self.torrents.has_key(updater_infohash):
+ updater_torrent = self.torrents[updater_infohash]
+ if updater_torrent.state == QUEUED:
+ self.change_torrent_state(updater_infohash, RUNNING,
+ index=0, replaced=0,
+ force_running=True)
+
+ def set_seen_remote_connections(self, seen=False):
+ if seen:
+ self.status_light.send_message('seen_remote_peers')
+ self.seen_remote_connections = seen
+
+ def set_seen_connections(self, seen=False):
+ if seen:
+ self.status_light.send_message('seen_peers')
+ self.seen_connections = seen
+
+ def new_displayed_torrent(self, infohash, metainfo, dlpath, state, config,
+ completion=None, uptotal=0, downtotal=0):
+ t = Struct()
+ t.metainfo = metainfo
+ t.dlpath = dlpath
+ t.state = state
+ t.config = config
+ t.completion = completion
+ t.uptotal = uptotal
+ t.downtotal = downtotal
+ t.widget = None
+ self.torrents[infohash] = t
+ self.create_torrent_widget(infohash)
+
+ def torrent_state_changed(self, infohash, dlpath, state, completion,
+ uptotal, downtotal, queuepos=None):
+ t = self.torrents[infohash]
+ self.remove_torrent_widget(infohash)
+ t.dlpath = dlpath
+ t.state = state
+ t.completion = completion
+ t.uptotal = uptotal
+ t.downtotal = downtotal
+ self.create_torrent_widget(infohash, queuepos)
+
+ def reorder_torrent(self, infohash, queuepos):
+ self.remove_torrent_widget(infohash)
+ self.create_torrent_widget(infohash, queuepos)
+
+ def update_completion(self, infohash, completion, files_left=None,
+ files_allocated=None):
+ t = self.torrents[infohash]
+ if files_left is not None and t.widget.filelistwindow is not None:
+ t.widget.filelistwindow.update(files_left, files_allocated)
+
+ def removed_torrent(self, infohash):
+ self.remove_torrent_widget(infohash)
+ del self.torrents[infohash]
+
+ def change_torrent_state(self, infohash, newstate, index=None,
+ replaced=None, force_running=False):
+ t = self.torrents[infohash]
+ pred = succ = None
+ if index is not None:
+ l = self.lists.setdefault(newstate, [])
+ if index > 0:
+ pred = l[index - 1]
+ if index < len(l):
+ succ = l[index]
+ self.torrentqueue.change_torrent_state(infohash, t.state, newstate,
+ pred, succ, replaced, force_running)
+
+ def finish(self, infohash):
+ t = self.torrents[infohash]
+ if t is None or t.state == KNOWN:
+ return
+ self.change_torrent_state(infohash, KNOWN)
+
+ def confirm_replace_running_torrent(self, infohash, replaced, index):
+ replace_func = lambda *args: self.change_torrent_state(infohash,
+ RUNNING, index, replaced)
+ add_func = lambda *args: self.change_torrent_state(infohash,
+ RUNNING, index, force_running=True)
+ moved_torrent = self.torrents[infohash]
+
+ if moved_torrent.state == RUNNING:
+ self.change_torrent_state(infohash, RUNNING, index)
+ return
+
+ if self.config['start_torrent_behavior'] == 'replace':
+ replace_func()
+ return
+ elif self.config['start_torrent_behavior'] == 'add':
+ add_func()
+ return
+
+ moved_torrent_name = moved_torrent.metainfo.name
+ confirm = MessageDialog(self.mainwindow,
+ _("Stop running torrent?"),
+ _('You are about to start "%s". Do you want to stop another running torrent as well?')%(moved_torrent_name),
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_YES_NO,
+ yesfunc=replace_func,
+ nofunc=add_func,
+ default=gtk.RESPONSE_YES)
+
+ def nag(self):
+ if ((self.config['donated'] != version) and
+ #(random.random() * NAG_FREQUENCY) < 1) and
+ False):
+ title = _("Have you donated?")
+ message = _("Welcome to the new version of %s. Have you donated?")%app_name
+ self.nagwindow = MessageDialog(self.mainwindow,
+ title,
+ message,
+ type=gtk.MESSAGE_QUESTION,
+ buttons=gtk.BUTTONS_YES_NO,
+ yesfunc=self.nag_yes, nofunc=self.nag_no,
+ default=gtk.RESPONSE_NO)
+
+ def nag_no(self):
+ self.donate()
+
+ def nag_yes(self):
+ self.set_config('donated', version)
+ MessageDialog(self.mainwindow,
+ _("Thanks!"),
+ _("Thanks for donating! To donate again, "
+ 'select "Donate" from the "Help" menu.'),
+ type=gtk.MESSAGE_INFO,
+ default=gtk.RESPONSE_OK
+ )
+
+ def donate(self):
+ self.visit_url(DONATE_URL)
+
+
+ def visit_url(self, url, callback=None):
+ t = threading.Thread(target=self._visit_url,
+ args=(url,callback))
+ t.setDaemon(True)
+ t.start()
+
+ def _visit_url(self, url, callback=None):
+ webbrowser.open(url)
+ if callback:
+ gtk_wrap(callback)
+
+ def toggle_shown(self):
+ if self.config['minimize_to_tray']:
+ if self.mainwindow.get_property('visible'):
+ self.mainwindow.hide()
+ else:
+ self.mainwindow.show_all()
+ else:
+ if not self.iconized:
+ self.mainwindow.iconify()
+ else:
+ self.mainwindow.deiconify()
+
+
+ def raiseerror(self, *args):
+ raise ValueError('test traceback behavior')
+
+#this class provides a thin layer around the loop so that the main window
+#doesn't have to run it. It protects againstexceptions in mainwindow creation
+#preventing the loop from starting (and causing "The grey screen of BT")
+class MainLoop:
+ def __init__(self):
+ self.mainwindow = None
+ self.started = 0
+
+ gtk.threads_init()
+
+ def set_mainwindow(self, mainwindow):
+ self.mainwindow = mainwindow
+
+ def run(self):
+ self.mainwindow.traythread.start()
+ gtk.threads_enter()
+
+ if self.mainwindow:
+ self.mainwindow.ssbutton.set_paused(self.mainwindow.config['pause'])
+ self.mainwindow.rate_slider_box.start()
+ self.mainwindow.init_updates()
+
+ try:
+ #the main loop has been started
+ self.started = 1
+ gtk.main()
+ except KeyboardInterrupt:
+ gtk.threads_leave()
+ if self.mainwindow:
+ self.mainwindow.torrentqueue.set_done()
+ raise
+
+ gtk.threads_leave()
+
+ def quit(self):
+ if self.mainwindow:
+ self.mainwindow.quit()
+
+
+def btgui_exit_gtk(mainloop):
+ # if the main loop has never run, we have to run it to flush blocking threads
+ # if it has run, running it a second time will cause duplicate-destruction problems
+ if not mainloop.started:
+ # queue up a command to close the gui
+ gobject.idle_add(lock_wrap, mainloop.quit)
+ # run the main loop so we process all queued commands, then quit
+ mainloop.run()
+
+if __name__ == '__main__':
+
+ mainloop = MainLoop()
+
+ # make sure we start the gtk loop once before we close
+ atexit.register(btgui_exit_gtk, mainloop)
+
+ torrentqueue = TorrentQueue.TorrentQueue(config, ui_options, ipc)
+ d = DownloadInfoFrame(config,TorrentQueue.ThreadWrappedQueue(torrentqueue))
+
+ mainloop.set_mainwindow(d)
+ global_log_func.logger = d.global_error
+
+ startflag = threading.Event()
+ dlthread = threading.Thread(target = torrentqueue.run,
+ args = (d, gtk_wrap, startflag))
+ dlthread.setDaemon(False)
+ dlthread.start()
+ startflag.wait()
+ # the wait may have been terminated because of an error
+ if torrentqueue.initialized == -1:
+ raise BTFailure(_("Could not start the TorrentQueue, see above for errors."))
+
+ torrentqueue.rawserver.install_sigint_handler()
+ for name in newtorrents:
+ d.torrentqueue.start_new_torrent_by_name(name)
+
+ try:
+ mainloop.run()
+ except KeyboardInterrupt:
+ # the gtk main loop is closed in MainLoop
+ sys.exit(1)
+ d.trayicon.disable()
+
diff --git a/changetracker-console b/changetracker-console
new file mode 120000
index 0000000..f4dd34a
--- /dev/null
+++ b/changetracker-console
@@ -0,0 +1 @@
+changetracker-console.py \ No newline at end of file
diff --git a/changetracker-console.py b/changetracker-console.py
new file mode 100755
index 0000000..976a536
--- /dev/null
+++ b/changetracker-console.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Henry 'Pi' James and Bram Cohen
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+from os.path import basename
+from sys import argv, exit
+from BitTorrent.bencode import bencode, bdecode
+
+if len(argv) < 3:
+ print _("Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]") % basename(argv[0])
+ print
+ exit(2) # common exit code for syntax error
+
+for f in argv[2:]:
+ h = open(f, 'rb')
+ metainfo = bdecode(h.read())
+ h.close()
+ if metainfo['announce'] != argv[1]:
+ print _("old announce for %s: %s") % (f, metainfo['announce'])
+ metainfo['announce'] = argv[1]
+ h = open(f, 'wb')
+ h.write(bencode(metainfo))
+ h.close()
diff --git a/credits-l10n.txt b/credits-l10n.txt
new file mode 100644
index 0000000..f26302a
--- /dev/null
+++ b/credits-l10n.txt
@@ -0,0 +1,50 @@
+Afrikaans: Michael Bütow, peter hanox
+العربية: Ahmed A Khalil, Bassem Abdullah, Mohamed El-Kamony, Mosa AAA, Rudy Zeinoun, salem alajmi, shady abdotr
+Български: Boian Valentinov Todorov, ceco, Nas Van Chev, Petra Milanova, Stoyan P. Bonkov
+Català: Alex Guardiet, Diego González Lorenzo, Jonathan atkinson, Raül Cambeiro, Raül
+Čeština: Dany Stejskal, Grossmann RAdek, Jiri Doubravsky, Marek Kobera, Martin Ambrož, Milan Beliansky, Peter Stelcer, Vlastimil Skacel, Vlastislav Weiner
+Cymraeg: Tony Sciubba
+Dansk: Christian Wichmann Moesgaard, kenneth krabat, Malthe Sunesen, Lasse Dalegaard, Mark Rosenstand, Tino Didriksen
+Deutsch: Amun Abdulla, Benjamin Schröder, Bjoern Schlaak, Buschbeck, Carl-Marcus Pellmann, Chris Anders, Christian Specht, Claus Radloff, Darko Bugarin, Denis Hamann, emre tas, Georg Schuster, Gerald Schaftner, hein blöd, jan, leopold pichlmüller, marcel barion, Martin hoffman, Michael Krämer, Michael Tänzer, Milan Geh, Nando Filigrasso, oliver boht, Petra Wittkopf, riraraffi, Roman Gasser, romy ripperger, rosati, sabit iftari, Sebastian Mosch, S. Hizo, Thomas Gruß, Thomas Magnet, Thomas Sandner, Wilhelm Hahn
+Ελληνικά: Nikolaos Gryspolakis, Vasilis Dialinos
+Esperanto: Gabriel Beecham
+Español: alejandro ariel mac-kay, Ana Lago, arturobibriesca, bernardita errazuriz, Carlos Lozano, Christian Jaramillo, claudia, D4NNy, Damian Antonio Fenocchio, Daniel Gasco Rodriguez, David, elaine de lima, Francisco, Gustavo Attanasio, gustavo chianese, Jaime Blázquez del Hierro, Jazmin Velazquez Lopez, Jovani, juan Perez, juliana, kesar, Lucas Lux, monica, Néstor Peralta, Nicanor, Pablo Canale, pazuzu, rai
+Español de Mexico : Alfonso Labastida Zamora, arturobibriesca, Cesar Armando Rodriguez, Daniel Gasco Rodriguez, Francisco, Hugo, Jose Guadalue Alvarez Cordoba, Jovani, juliana, Pablo Canale, zukaboy_gdl
+Eesti: Aleksander Härmas, eerik mägi, Priit Laes
+Euskara: 3ARRANO.com
+فارسی: M.Mahmoudi
+Suomi: Aaro Juntunen, ett pok, jeremias leppänen, Juha Heinänen, Matti Tuomola, Matti Viljanen, Ni Mer, Tiia Kärkkäinen, Timo, Ville Virta
+Français: Ariel G, Christophe Riviere, David Maciejak, Edouard Biton, finder, Guilhem Bailly, Hamdouch deera, jean vignoli, Jürgen Köster, Lucas Simonch, ludo, Ludovic Mirlatif, Nicolas, Nicolas Staphylas, Philippe Lamalice, Raphael Chabert, richard, samuel boucher, sarah, Sébastien Mouren, Trollnumber1
+Gaeilge: Gabriel Beecham, Gareth Peoples
+Galego:
+עברית: Amir Aharoni, Amitay, Avi Erel, Elhanan Ben-Yishay, eran raderman, YossiZR
+Hrvatski: Anto Anic, djryback, ZeroKillaz
+Magyar: Attila Selmeci, Bíró Mariann, esoxxx, Javori Gabor, Kovács Rajmund, laszlo Pataki, les Vorosmarthy, Peter Takacs, Tamas Szanto, tr, Vincze Márton
+Հայերեն: Suren Karapetyan
+Italiano: alessandra, Alessandro Aglietti, ciccio orso, ennio, Fabrizio Salieri, Federico D'Ambrosio, franco, Fulvio, gian bernetti, Giasone Argo, giuseppe marchetta, Hiram Oswaldo Pena Porras, Marco Solimando, massimo maccolini, matteo, max, Monty, motard, mp, napoli, paolo, paul rollin, pietropanacci, salvatore, serdean, stefano, TheBoss, valery, Valter Ratti, Vincenzo Reale
+日本語: Knagi, Masataka Nakamura, Megan E, mitcho (Michael 芳貴 Erlewine), tomoko kanda, Yasushi Iwata
+ქართული ენა: Aiet Kolkhi
+한국어: Kim, YungGeun, Son, Kyeong-uk, Spade, Steve K Lee, Sung Jae, Cho
+Lietuvių: Kestas Ermanas, Vaidas Kiela
+Malayalam: Mannar Mathai
+Bahasa melayu: Emirin Mohamed Kasah
+Norsk bokmål: Arnt Runar Tjøstheim, Guri Norman, Ingmar Hemsen, Philipp Aaholm, tormod
+Nederlands: alexanderpas, Carlo Martens, David Visser, David Visser, Dennis Veenstra, eric, Erwin Poeze, Frank Eising, Frank Jacobs, Fred Brouwer, ger lanslots, Gijsbert Ooms, Jan Schut, Koen Vits, Levi Roelofsma, manuel, Martijn van Gene, Michel Pauwels, M.J.Louwe, noah, Patrick Catthoor, Paul Kassebaum, Petra van Assen, Roy Mietes, sofie clissen, Tijmen, vanessa, Wolf Hijlkema
+Norsk Nynorsk: Frode
+Polski: Adam Andrzejewski, Bartek Wisniewski, Citrus, crashload, jerzy czaja -szwajcer, Jozef Rozmus, Konrad Mantorski, Marek Adam, Markus Valen, Michal Durys, olek lorenc, Piotr Drąg, Piotr Gospodarek, Szymon Adamczyk, Tomasz Kłosiński
+Português: Carlos, João Pedro Pais, Luis Antonio Domingues, sepulveda, Tiago Dias Bugarin, Tiago Filipe Gonçalves Afonso Sousa da Silva, Vandrei Cerqueira
+Português do Brasil: Augusto Uehara, Carlos Werner , Édipo Antunes, Eduardo Tormento, Gustavo Bruno, juvas men, maycon souza, Natanael Pinho, Paulo Anselmo de Oliveira, Renan Valente Rangel, Renato, Tiago Dias Bugarin, Vandrei Cerqueira, wanteildo antunes ayres de lima, Wilson Carvalho da Cruz
+Română: izabela, Lupoiu Victor Alexandru, Manea Costin, peter pann, Radu Ciuca, Radu Costel-Adrian
+Русский: Andrey Kuznetsov, Andrey, Dmitry Bogatykh, Dmitry Bogatykh, Dmitry Morozov, Efremov, jevgenij, Lozovoy Vasiliy, Pavel Maryanov, Pavel Vlasov, Shangin Alexander, Vika, Vladislav Zavyalov, Yuri
+Slovenský: Andrej Palička, fork27, jakub siska, jefko, Lukáš Lalinský, patrik r, savas, Tibor Vrskovy
+Slovensko: A.V., Dušan Mulac, Ervin, Jure Repinc, Jure Repinc
+Shqipe: arianit, Nick
+Svenska: Alexander Berglund, Christoffer Söderholm, David Vilhelmsson Ronad, Essi, Gabriela Soto Mora, Gustav Tiger, Henrik, Jonas Hedberg, Joop van der Lei, Markus, Martin Svensson, mattias söderberg, Stefan, T. N., William Noritis
+ తెలుగు: Madan Meka
+ภาษาไทย: Supiti Buranawatanachoke, Yongyut Booncherd
+tlhIngan-Hol: chris curran
+Türkçe: Elnur Mehdi, Erhan Abay, Eryen AKGÜN, Levent, Mehmet Ergene, m.eminogullari@gmail.com, Oguzhan Yuzabasıoglu, Özcan Arslan, Ozgur Basar, Veysel Harun Sahin, z
+Українська: Andrew Lahush, Denis Mostovlyuk, Yakov Glumov
+Tiê?ng Viê?t: Clytie Siddall
+简体中文: ERIC, Lee Fui Ling, Li Jiaxiang, Qiang Yuan, ricky, Tang Kai Yiu, thesues, xueyong, Yang Hong, ZhouMo
+繁體中文: abbie, Abel Cheung, alex lee, cheng-han chiang, Cheng Ka Ho, Hin, Jamie, kourge, Lee Fui Ling, ming chang, something else, Tang Kai Yiu, Tony Tsang, Vincent M, wongpoyee, Zeus Cho, Zhu He
diff --git a/credits.txt b/credits.txt
new file mode 100644
index 0000000..ee6bd2d
--- /dev/null
+++ b/credits.txt
@@ -0,0 +1,45 @@
+Inventor
+Bram Cohen
+
+Developers
+Matt Chisholm
+Andrew Loewenstern
+Greg Hazel
+Uoti Urpala
+
+Project Manager
+Ross Cohen
+
+Logo
+www.jinx.com
+
+The following people have all helped with BitTorrent in some way:
+
+Bill Bumgarner
+David Creswick
+Jeremy Avnet
+Jonathan Moore
+Greg Broiles
+Barry Cohen
+sayke
+Steve Jenson
+Myers Carpenter
+Francis Crick
+Petru Paler
+Jeff Darcy
+John Gilmore
+Yann Vernier
+Pat Mahoney
+Boris Zbarsky
+Eric Tiedemann
+Henry 'Pi' James
+Loring Holden
+Robert Stone
+Michael Janssen
+John Hoffman
+Kevin Drum
+Denis Ahrens
+Ed Savage-Jones
+Howard Chu
+Jeremy Evans
+Michael Bibby
diff --git a/images/bittorrent.ico b/images/bittorrent.ico
new file mode 100644
index 0000000..47e6e70
--- /dev/null
+++ b/images/bittorrent.ico
Binary files differ
diff --git a/images/icons/default/abort.png b/images/icons/default/abort.png
new file mode 100644
index 0000000..cd33fc0
--- /dev/null
+++ b/images/icons/default/abort.png
Binary files differ
diff --git a/images/icons/default/broken.png b/images/icons/default/broken.png
new file mode 100644
index 0000000..7d49e88
--- /dev/null
+++ b/images/icons/default/broken.png
Binary files differ
diff --git a/images/icons/default/finished.png b/images/icons/default/finished.png
new file mode 100644
index 0000000..7c95d07
--- /dev/null
+++ b/images/icons/default/finished.png
Binary files differ
diff --git a/images/icons/default/info.png b/images/icons/default/info.png
new file mode 100644
index 0000000..7dcd792
--- /dev/null
+++ b/images/icons/default/info.png
Binary files differ
diff --git a/images/icons/default/pause.png b/images/icons/default/pause.png
new file mode 100644
index 0000000..145b933
--- /dev/null
+++ b/images/icons/default/pause.png
Binary files differ
diff --git a/images/icons/default/paused.png b/images/icons/default/paused.png
new file mode 100644
index 0000000..f65fbd5
--- /dev/null
+++ b/images/icons/default/paused.png
Binary files differ
diff --git a/images/icons/default/play.png b/images/icons/default/play.png
new file mode 100644
index 0000000..8e2f2cb
--- /dev/null
+++ b/images/icons/default/play.png
Binary files differ
diff --git a/images/icons/default/queued.png b/images/icons/default/queued.png
new file mode 100644
index 0000000..8135c68
--- /dev/null
+++ b/images/icons/default/queued.png
Binary files differ
diff --git a/images/icons/default/remove.png b/images/icons/default/remove.png
new file mode 100644
index 0000000..c8e37be
--- /dev/null
+++ b/images/icons/default/remove.png
Binary files differ
diff --git a/images/icons/default/running.png b/images/icons/default/running.png
new file mode 100644
index 0000000..7ca2c0d
--- /dev/null
+++ b/images/icons/default/running.png
Binary files differ
diff --git a/images/icons/default/status-broken.png b/images/icons/default/status-broken.png
new file mode 100644
index 0000000..095a6a2
--- /dev/null
+++ b/images/icons/default/status-broken.png
Binary files differ
diff --git a/images/icons/default/status-natted.png b/images/icons/default/status-natted.png
new file mode 100644
index 0000000..9e67557
--- /dev/null
+++ b/images/icons/default/status-natted.png
Binary files differ
diff --git a/images/icons/default/status-pre-natted.png b/images/icons/default/status-pre-natted.png
new file mode 100644
index 0000000..513ccca
--- /dev/null
+++ b/images/icons/default/status-pre-natted.png
Binary files differ
diff --git a/images/icons/default/status-running.png b/images/icons/default/status-running.png
new file mode 100644
index 0000000..fd7a309
--- /dev/null
+++ b/images/icons/default/status-running.png
Binary files differ
diff --git a/images/icons/default/status-starting.png b/images/icons/default/status-starting.png
new file mode 100644
index 0000000..7c909d5
--- /dev/null
+++ b/images/icons/default/status-starting.png
Binary files differ
diff --git a/images/icons/default/status-stopped.png b/images/icons/default/status-stopped.png
new file mode 100644
index 0000000..4fdb7d9
--- /dev/null
+++ b/images/icons/default/status-stopped.png
Binary files differ
diff --git a/images/icons/default/trashcan.png b/images/icons/default/trashcan.png
new file mode 100644
index 0000000..709bd49
--- /dev/null
+++ b/images/icons/default/trashcan.png
Binary files differ
diff --git a/images/icons/old/broken.png b/images/icons/old/broken.png
new file mode 100644
index 0000000..3f74744
--- /dev/null
+++ b/images/icons/old/broken.png
Binary files differ
diff --git a/images/icons/old/finished.png b/images/icons/old/finished.png
new file mode 100644
index 0000000..fc29d9a
--- /dev/null
+++ b/images/icons/old/finished.png
Binary files differ
diff --git a/images/icons/old/info.png b/images/icons/old/info.png
new file mode 100644
index 0000000..75c3ff5
--- /dev/null
+++ b/images/icons/old/info.png
Binary files differ
diff --git a/images/icons/old/pause.png b/images/icons/old/pause.png
new file mode 100644
index 0000000..3da5aeb
--- /dev/null
+++ b/images/icons/old/pause.png
Binary files differ
diff --git a/images/icons/old/paused.png b/images/icons/old/paused.png
new file mode 100644
index 0000000..ea83f83
--- /dev/null
+++ b/images/icons/old/paused.png
Binary files differ
diff --git a/images/icons/old/play.png b/images/icons/old/play.png
new file mode 100644
index 0000000..7ae6b2e
--- /dev/null
+++ b/images/icons/old/play.png
Binary files differ
diff --git a/images/icons/old/queued.png b/images/icons/old/queued.png
new file mode 100644
index 0000000..d03b6c2
--- /dev/null
+++ b/images/icons/old/queued.png
Binary files differ
diff --git a/images/icons/old/remove.png b/images/icons/old/remove.png
new file mode 100644
index 0000000..f09bdc0
--- /dev/null
+++ b/images/icons/old/remove.png
Binary files differ
diff --git a/images/icons/old/running.png b/images/icons/old/running.png
new file mode 100644
index 0000000..5fb45e1
--- /dev/null
+++ b/images/icons/old/running.png
Binary files differ
diff --git a/images/icons/old/status-broken.png b/images/icons/old/status-broken.png
new file mode 100644
index 0000000..7cfa3ef
--- /dev/null
+++ b/images/icons/old/status-broken.png
Binary files differ
diff --git a/images/icons/old/status-natted.png b/images/icons/old/status-natted.png
new file mode 100644
index 0000000..b155e93
--- /dev/null
+++ b/images/icons/old/status-natted.png
Binary files differ
diff --git a/images/icons/old/status-pre-natted.png b/images/icons/old/status-pre-natted.png
new file mode 100644
index 0000000..f311ba8
--- /dev/null
+++ b/images/icons/old/status-pre-natted.png
Binary files differ
diff --git a/images/icons/old/status-running.png b/images/icons/old/status-running.png
new file mode 100644
index 0000000..7a89822
--- /dev/null
+++ b/images/icons/old/status-running.png
Binary files differ
diff --git a/images/icons/old/status-starting.png b/images/icons/old/status-starting.png
new file mode 100644
index 0000000..09e3519
--- /dev/null
+++ b/images/icons/old/status-starting.png
Binary files differ
diff --git a/images/icons/old/status-stopped.png b/images/icons/old/status-stopped.png
new file mode 100644
index 0000000..15a5a43
--- /dev/null
+++ b/images/icons/old/status-stopped.png
Binary files differ
diff --git a/images/logo/bittorrent_32.png b/images/logo/bittorrent_32.png
new file mode 100644
index 0000000..aa016bd
--- /dev/null
+++ b/images/logo/bittorrent_32.png
Binary files differ
diff --git a/images/logo/bittorrent_96.png b/images/logo/bittorrent_96.png
new file mode 100644
index 0000000..aefd45e
--- /dev/null
+++ b/images/logo/bittorrent_96.png
Binary files differ
diff --git a/khashmir/KRateLimiter.py b/khashmir/KRateLimiter.py
new file mode 100644
index 0000000..a9a9cdc
--- /dev/null
+++ b/khashmir/KRateLimiter.py
@@ -0,0 +1,75 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from BitTorrent.platform import bttime as time
+from BitTorrent.CurrentRateMeasure import Measure
+from const import *
+from random import randrange, shuffle
+from traceback import print_exc
+
+class KRateLimiter:
+ # special rate limiter that drops entries that have been sitting in the queue for longer than self.age seconds
+ # by default we toss anything that has less than 5 seconds to live
+ def __init__(self, transport, rate, call_later, rlcount, rate_period, age=(KRPC_TIMEOUT - 5)):
+ self.q = []
+ self.transport = transport
+ self.rate = rate
+ self.curr = 0
+ self.running = False
+ self.age = age
+ self.last = 0
+ self.call_later = call_later
+ self.rlcount = rlcount
+ self.measure = Measure(rate_period)
+ self.sent=self.dropped=0
+ if self.rate == 0:
+ self.rate = 1e10
+
+ def sendto(self, s, i, addr):
+ self.q.append((time(), (s, i, addr)))
+ if not self.running:
+ self.run(check=True)
+
+ def run(self, check=False):
+ t = time()
+ self.expire(t)
+ self.curr -= (t - self.last) * self.rate
+ self.last = t
+ if check:
+ self.curr = max(self.curr, 0 - self.rate)
+
+ shuffle(self.q)
+ while self.q and self.curr <= 0:
+ x, tup = self.q.pop()
+ size = len(tup[0])
+ self.curr += size
+ try:
+ self.transport.sendto(*tup)
+ self.sent+=1
+ self.rlcount(size)
+ self.measure.update_rate(size)
+ except:
+ if tup[2][1] != 0:
+ print ">>> sendto exception", tup
+ print_exc()
+ self.q.sort()
+ if self.q or self.curr > 0:
+ self.running = True
+ # sleep for at least a half second
+ self.call_later(self.run, max(self.curr / self.rate, 0.5))
+ else:
+ self.running = False
+
+ def expire(self, t=time()):
+ if self.q:
+ expire_time = t - self.age
+ while self.q and self.q[0][0] < expire_time:
+ self.q.pop(0)
+ self.dropped+=1
diff --git a/khashmir/__init__.py b/khashmir/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/khashmir/__init__.py
diff --git a/khashmir/actions.py b/khashmir/actions.py
new file mode 100644
index 0000000..2bbe94b
--- /dev/null
+++ b/khashmir/actions.py
@@ -0,0 +1,349 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from BitTorrent.platform import bttime as time
+
+import const
+
+from khash import intify
+from ktable import KTable, K
+from util import unpackNodes
+from krpc import KRPCProtocolError, KRPCSelfNodeError
+from bisect import insort
+
+class NodeWrap(object):
+ def __init__(self, node, target):
+ self.num = target
+ self.node = node
+
+ def __cmp__(self, o):
+ """ this function is for sorting nodes relative to the ID we are looking for """
+ x, y = self.num ^ o.num, self.num ^ self.node.num
+ if x > y:
+ return 1
+ elif x < y:
+ return -1
+ return 0
+
+class ActionBase(object):
+ """ base class for some long running asynchronous proccesses like finding nodes or values """
+ def __init__(self, table, target, callback, callLater):
+ self.table = table
+ self.target = target
+ self.callLater = callLater
+ self.num = intify(target)
+ self.found = {}
+ self.foundq = []
+ self.queried = {}
+ self.queriedip = {}
+ self.answered = {}
+ self.callback = callback
+ self.outstanding = 0
+ self.finished = 0
+
+ def sort(self, a, b):
+ """ this function is for sorting nodes relative to the ID we are looking for """
+ x, y = self.num ^ a.num, self.num ^ b.num
+ if x > y:
+ return 1
+ elif x < y:
+ return -1
+ return 0
+
+ def shouldQuery(self, node):
+ if node.id == self.table.node.id:
+ return False
+ elif (node.host, node.port) not in self.queriedip and node.id not in self.queried:
+ self.queriedip[(node.host, node.port)] = 1
+ self.queried[node.id] = 1
+ return True
+ return False
+
+ def _cleanup(self):
+ self.foundq = None
+ self.found = None
+ self.queried = None
+ self.queriedip = None
+
+ def goWithNodes(self, t):
+ pass
+
+
+
+FIND_NODE_TIMEOUT = 15
+
+class FindNode(ActionBase):
+ """ find node action merits it's own class as it is a long running stateful process """
+ def handleGotNodes(self, dict):
+ _krpc_sender = dict['_krpc_sender']
+ dict = dict['rsp']
+ sender = {'id' : dict["id"]}
+ sender['port'] = _krpc_sender[1]
+ sender['host'] = _krpc_sender[0]
+ sender = self.table.Node().initWithDict(sender)
+ try:
+ l = unpackNodes(dict.get("nodes", []))
+ if not self.answered.has_key(sender.id):
+ self.answered[sender.id] = sender
+ except:
+ l = []
+ self.table.invalidateNode(sender)
+
+ if self.finished:
+ # a day late and a dollar short
+ return
+ self.outstanding = self.outstanding - 1
+ for node in l:
+ n = self.table.Node().initWithDict(node)
+ if not self.found.has_key(n.id):
+ self.found[n.id] = n
+ insort(self.foundq, NodeWrap(n, self.num))
+ self.table.insertNode(n, contacted=0)
+ self.schedule()
+
+ def schedule(self):
+ """
+ send messages to new peers, if necessary
+ """
+ if self.finished:
+ return
+ l = [wrapper.node for wrapper in self.foundq[:K]]
+ for node in l:
+ if node.id == self.target:
+ self.finished=1
+ return self.callback([node])
+ if self.shouldQuery(node):
+ #xxxx t.timeout = time.time() + FIND_NODE_TIMEOUT
+ try:
+ df = node.findNode(self.target, self.table.node.id)
+ except KRPCSelfNodeError:
+ pass
+ else:
+ df.addCallbacks(self.handleGotNodes, self.makeMsgFailed(node))
+ self.outstanding = self.outstanding + 1
+ if self.outstanding >= const.CONCURRENT_REQS:
+ break
+ assert(self.outstanding) >=0
+ if self.outstanding == 0:
+ ## all done!!
+ self.finished=1
+ self._cleanup()
+ self.callLater(self.callback, 0, (l[:K],))
+
+ def makeMsgFailed(self, node):
+ return self._defaultGotNodes
+
+ def _defaultGotNodes(self, err):
+ self.outstanding = self.outstanding - 1
+ self.schedule()
+
+ def goWithNodes(self, nodes):
+ """
+ this starts the process, our argument is a transaction with t.extras being our list of nodes
+ it's a transaction since we got called from the dispatcher
+ """
+ for node in nodes:
+ if node.id == self.table.node.id:
+ continue
+ else:
+ self.found[node.id] = node
+ insort(self.foundq, NodeWrap(node, self.num))
+ self.schedule()
+
+
+get_value_timeout = 15
+class GetValue(FindNode):
+ def __init__(self, table, target, callback, callLater, find="findValue"):
+ FindNode.__init__(self, table, target, callback, callLater)
+ self.findValue = find
+
+ """ get value task """
+ def handleGotNodes(self, dict):
+ _krpc_sender = dict['_krpc_sender']
+ dict = dict['rsp']
+ sender = {'id' : dict["id"]}
+ sender['port'] = _krpc_sender[1]
+ sender['host'] = _krpc_sender[0]
+ sender = self.table.Node().initWithDict(sender)
+
+ if self.finished or self.answered.has_key(sender.id):
+ # a day late and a dollar short
+ return
+ self.outstanding = self.outstanding - 1
+
+ self.answered[sender.id] = sender
+ # go through nodes
+ # if we have any closer than what we already got, query them
+ if dict.has_key('nodes'):
+ try:
+ l = unpackNodes(dict.get('nodes',[]))
+ except:
+ l = []
+ del(self.answered[sender.id])
+
+ for node in l:
+ n = self.table.Node().initWithDict(node)
+ if not self.found.has_key(n.id):
+ self.table.insertNode(n)
+ self.found[n.id] = n
+ insort(self.foundq, NodeWrap(n, self.num))
+ elif dict.has_key('values'):
+ def x(y, z=self.results):
+ if not z.has_key(y):
+ z[y] = 1
+ return y
+ else:
+ return None
+ z = len(dict.get('values', []))
+ v = filter(None, map(x, dict.get('values',[])))
+ if(len(v)):
+ self.callLater(self.callback, 0, (v,))
+ self.schedule()
+
+ ## get value
+ def schedule(self):
+ if self.finished:
+ return
+ for node in [wrapper.node for wrapper in self.foundq[:K]]:
+ if self.shouldQuery(node):
+ #xxx t.timeout = time.time() + GET_VALUE_TIMEOUT
+ try:
+ f = getattr(node, self.findValue)
+ except AttributeError:
+ print ">>> findValue %s doesn't have a %s method!" % (node, self.findValue)
+ else:
+ try:
+ df = f(self.target, self.table.node.id)
+ df.addCallback(self.handleGotNodes)
+ df.addErrback(self.makeMsgFailed(node))
+ self.outstanding = self.outstanding + 1
+ self.queried[node.id] = 1
+ except KRPCSelfNodeError:
+ pass
+ if self.outstanding >= const.CONCURRENT_REQS:
+ break
+ assert(self.outstanding) >=0
+ if self.outstanding == 0:
+ ## all done, didn't find it!!
+ self.finished=1
+ self._cleanup()
+ self.callLater(self.callback,0, ([],))
+
+ ## get value
+ def goWithNodes(self, nodes, found=None):
+ self.results = {}
+ if found:
+ for n in found:
+ self.results[n] = 1
+ for node in nodes:
+ if node.id == self.table.node.id:
+ continue
+ else:
+ self.found[node.id] = node
+ insort(self.foundq, NodeWrap(node, self.num))
+ self.schedule()
+
+
+class StoreValue(ActionBase):
+ def __init__(self, table, target, value, callback, callLater, store="storeValue"):
+ ActionBase.__init__(self, table, target, callback, callLater)
+ self.value = value
+ self.stored = []
+ self.store = store
+
+ def storedValue(self, t, node):
+ self.outstanding -= 1
+ if self.finished:
+ return
+ self.stored.append(t)
+ if len(self.stored) >= const.STORE_REDUNDANCY:
+ self.finished=1
+ self.callback(self.stored)
+ else:
+ if not len(self.stored) + self.outstanding >= const.STORE_REDUNDANCY:
+ self.schedule()
+ return t
+
+ def storeFailed(self, t, node):
+ self.outstanding -= 1
+ if self.finished:
+ return t
+ self.schedule()
+ return t
+
+ def schedule(self):
+ if self.finished:
+ return
+ num = const.CONCURRENT_REQS - self.outstanding
+ if num > const.STORE_REDUNDANCY - len(self.stored):
+ num = const.STORE_REDUNDANCY - len(self.stored)
+ if num == 0 and not self.finished:
+ self.finished=1
+ self.callback(self.stored)
+ while num > 0:
+ try:
+ node = self.nodes.pop()
+ except IndexError:
+ if self.outstanding == 0:
+ self.finished = 1
+ self._cleanup()
+ self.callback(self.stored)
+ return
+ else:
+ if not node.id == self.table.node.id:
+ try:
+ f = getattr(node, self.store)
+ except AttributeError:
+ print ">>> %s doesn't have a %s method!" % (node, self.store)
+ else:
+ try:
+ df = f(self.target, self.value, self.table.node.id)
+ except KRPCProtocolError:
+ self.table.table.invalidateNode(node)
+ except KRPCSelfNodeError:
+ pass
+ else:
+ df.addCallback(self.storedValue,(),{'node':node})
+ df.addErrback(self.storeFailed, (), {'node':node})
+ self.outstanding += 1
+ num -= 1
+
+ def goWithNodes(self, nodes):
+ self.nodes = nodes
+ self.nodes.sort(self.sort)
+ self.schedule()
+
+
+class GetAndStore(GetValue):
+ def __init__(self, table, target, value, callback, storecallback, callLater, find="findValue", store="storeValue"):
+ self.store = store
+ self.value = value
+ self.cb2 = callback
+ self.storecallback = storecallback
+ def cb(res):
+ self.cb2(res)
+ if not(res):
+ n = StoreValue(self.table, self.target, self.value, self.doneStored, self.callLater, self.store)
+ n.goWithNodes(self.answered.values())
+ GetValue.__init__(self, table, target, cb, callLater, find)
+
+ def doneStored(self, dict):
+ self.storecallback(dict)
+
+class KeyExpirer:
+ def __init__(self, store, callLater):
+ self.store = store
+ self.callLater = callLater
+ self.callLater(self.doExpire, const.KEINITIAL_DELAY)
+
+ def doExpire(self):
+ self.cut = time() - const.KE_AGE
+ self.store.expire(self.cut)
+ self.callLater(self.doExpire, const.KE_DELAY)
diff --git a/khashmir/cache.py b/khashmir/cache.py
new file mode 100644
index 0000000..ab4df30
--- /dev/null
+++ b/khashmir/cache.py
@@ -0,0 +1,52 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from BitTorrent.platform import bttime as time
+
+class Cache:
+ def __init__(self, touch_on_access = False):
+ self.data = {}
+ self.q = []
+ self.touch = touch_on_access
+
+ def __getitem__(self, key):
+ if self.touch:
+ v = self.data[key][1]
+ self[key] = v
+ return self.data[key][1]
+
+ def __setitem__(self, key, value):
+ t = time()
+ self.data[key] = (t, value)
+ self.q.insert(0, (t, key, value))
+
+ def __delitem__(self, key):
+ del(self.data[key])
+
+ def has_key(self, key):
+ return self.data.has_key(key)
+
+ def keys(self):
+ return self.data.keys()
+
+ def expire(self, expire_time):
+ try:
+ while self.q[-1][0] < expire_time:
+ x = self.q.pop()
+ assert(x[0] < expire_time)
+ try:
+ t, v = self.data[x[1]]
+ if v == x[2] and t == x[0]:
+ del(self.data[x[1]])
+ except KeyError:
+ pass
+ except IndexError:
+ pass
+
diff --git a/khashmir/const.py b/khashmir/const.py
new file mode 100644
index 0000000..eabe0e8
--- /dev/null
+++ b/khashmir/const.py
@@ -0,0 +1,74 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# magic id to use before we know a peer's id
+NULL_ID = 20 * '\0'
+
+# Kademlia "K" constant, this should be an even number
+K = 8
+
+# SHA1 is 160 bits long
+HASH_LENGTH = 160
+
+# checkpoint every this many seconds
+CHECKPOINT_INTERVAL = 60 * 5 # five minutes
+
+# how often to find our own nodes
+FIND_CLOSE_INTERVAL = 60 * 15 # fifteen minutes
+
+### SEARCHING/STORING
+# concurrent krpc calls per find node/value request!
+CONCURRENT_REQS = K
+
+# how many hosts to post to
+STORE_REDUNDANCY = 3
+
+
+### ROUTING TABLE STUFF
+# how many times in a row a node can fail to respond before it's booted from the routing table
+MAX_FAILURES = 3
+
+# never ping a node more often than this
+MIN_PING_INTERVAL = 60 * 15 # fifteen minutes
+
+# refresh buckets that haven't been touched in this long
+BUCKET_STALENESS = 60 * 15 # fifteen minutes
+
+
+### KEY EXPIRER
+# time before expirer starts running
+KEINITIAL_DELAY = 15 # 15 seconds - to clean out old stuff in persistent db
+
+# time between expirer runs
+KE_DELAY = 60 * 5 # 5 minutes
+
+# expire entries older than this
+KE_AGE = 60 * 30 # 30 minutes
+
+
+## krpc errback codes
+KRPC_TIMEOUT = 20
+
+KRPC_ERROR = 1
+KRPC_ERROR_METHOD_UNKNOWN = 2
+KRPC_ERROR_RECEIVED_UNKNOWN = 3
+KRPC_ERROR_TIMEOUT = 4
+KRPC_SOCKET_ERROR = 5
+
+KRPC_CONNECTION_CACHE_TIME = KRPC_TIMEOUT * 2
+
+
+## krpc erorr response codes
+KERR_ERROR = (201, "Generic Error")
+KERR_SERVER_ERROR = (202, "Server Error")
+KERR_PROTOCOL_ERROR = (203, "Protocol Error")
+KERR_METHOD_UNKNOWN = (204, "Method Unknown")
+KERR_INVALID_ARGS = (205, "Invalid Argements")
+KERR_INVALID_TOKEN = (206, "Invalid Token")
diff --git a/khashmir/hammerlock.py b/khashmir/hammerlock.py
new file mode 100644
index 0000000..dd4b5a1
--- /dev/null
+++ b/khashmir/hammerlock.py
@@ -0,0 +1,37 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+INTERVAL = 60
+PERIODS = 5
+
+class Hammerlock:
+ def __init__(self, rate, call_later):
+ self.rate = rate
+ self.call_later = call_later
+ self.curr = 0
+ self.buckets = [{} for x in range(PERIODS)]
+ self.call_later(self._cycle, INTERVAL)
+
+ def _cycle(self):
+ self.curr = (self.curr + 1) % PERIODS
+ self.buckets[self.curr] = {}
+ self.call_later(self._cycle, INTERVAL)
+
+ def check(self, addr):
+ x = self.buckets[self.curr].get(addr, 0) + 1
+ self.buckets[self.curr][addr] = x
+ x = 0
+ for bucket in self.buckets:
+ x += bucket.get(addr, 0)
+ if x >= self.rate:
+ return False
+ else:
+ return True
+
diff --git a/khashmir/inserter.py b/khashmir/inserter.py
new file mode 100644
index 0000000..d45ff04
--- /dev/null
+++ b/khashmir/inserter.py
@@ -0,0 +1,49 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+### generate a bunch of nodes that use a single contact point
+usage = "usage: inserter.py <contact host> <contact port>"
+
+from utkhashmir import UTKhashmir
+from BitTorrent.RawServer_magic import RawServer
+from BitTorrent.defaultargs import common_options, rare_options
+from khashmir.khash import newID
+from random import randrange
+from threading import Event
+import sys, os
+
+from khashmir.krpc import KRPC
+KRPC.noisy = 1
+global done
+done = 0
+def d(n):
+ global done
+ done = done+1
+
+if __name__=="__main__":
+ global done
+ host, port = sys.argv[1:]
+ x = UTKhashmir("", 22038, "/tmp/cgcgcgc")
+ x.addContact(host, int(port))
+ x.rawserver.listen_once()
+ x.findCloseNodes(d)
+ while not done:
+ x.rawserver.listen_once()
+ l = []
+ for i in range(10):
+ k = newID()
+ v = randrange(10000,20000)
+ l.append((k, v))
+ x.announcePeer(k, v, d)
+ done = 1
+ while done < 10:
+ x.rawserver.listen_once(1)
+ for k,v in l:
+ print ">>>", `k`, v
diff --git a/khashmir/khash.py b/khashmir/khash.py
new file mode 100644
index 0000000..2750a7d
--- /dev/null
+++ b/khashmir/khash.py
@@ -0,0 +1,120 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from sha import sha
+from random import randint
+
+#this is ugly, hopefully os.entropy will be in 2.4
+try:
+ from entropy import entropy
+except ImportError:
+ def entropy(n):
+ s = ''
+ for i in range(n):
+ s += chr(randint(0,255))
+ return s
+
+def intify(hstr):
+ """20 bit hash, big-endian -> long python integer"""
+ assert len(hstr) == 20
+ return long(hstr.encode('hex'), 16)
+
+def stringify(num):
+ """long int -> 20-character string"""
+ str = hex(num)[2:]
+ if str[-1] == 'L':
+ str = str[:-1]
+ if len(str) % 2 != 0:
+ str = '0' + str
+ str = str.decode('hex')
+ return (20 - len(str)) *'\x00' + str
+
+def distance(a, b):
+ """distance between two 160-bit hashes expressed as 20-character strings"""
+ return intify(a) ^ intify(b)
+
+
+def newID():
+ """returns a new pseudorandom globally unique ID string"""
+ h = sha()
+ h.update(entropy(20))
+ return h.digest()
+
+def newIDInRange(min, max):
+ return stringify(randRange(min,max))
+
+def randRange(min, max):
+ return min + intify(newID()) % (max - min)
+
+def newTID():
+ return randRange(-2**30, 2**30)
+
+### Test Cases ###
+import unittest
+
+class NewID(unittest.TestCase):
+ def testLength(self):
+ self.assertEqual(len(newID()), 20)
+ def testHundreds(self):
+ for x in xrange(100):
+ self.testLength
+
+class Intify(unittest.TestCase):
+ known = [('\0' * 20, 0),
+ ('\xff' * 20, 2L**160 - 1),
+ ]
+ def testKnown(self):
+ for str, value in self.known:
+ self.assertEqual(intify(str), value)
+ def testEndianessOnce(self):
+ h = newID()
+ while h[-1] == '\xff':
+ h = newID()
+ k = h[:-1] + chr(ord(h[-1]) + 1)
+ self.assertEqual(intify(k) - intify(h), 1)
+ def testEndianessLots(self):
+ for x in xrange(100):
+ self.testEndianessOnce()
+
+class Disantance(unittest.TestCase):
+ known = [
+ (("\0" * 20, "\xff" * 20), 2**160L -1),
+ ((sha("foo").digest(), sha("foo").digest()), 0),
+ ((sha("bar").digest(), sha("bar").digest()), 0)
+ ]
+ def testKnown(self):
+ for pair, dist in self.known:
+ self.assertEqual(distance(pair[0], pair[1]), dist)
+ def testCommutitive(self):
+ for i in xrange(100):
+ x, y, z = newID(), newID(), newID()
+ self.assertEqual(distance(x,y) ^ distance(y, z), distance(x, z))
+
+class RandRange(unittest.TestCase):
+ def testOnce(self):
+ a = intify(newID())
+ b = intify(newID())
+ if a < b:
+ c = randRange(a, b)
+ self.assertEqual(a <= c < b, 1, "output out of range %d %d %d" % (b, c, a))
+ else:
+ c = randRange(b, a)
+ assert b <= c < a, "output out of range %d %d %d" % (b, c, a)
+
+ def testOneHundredTimes(self):
+ for i in xrange(100):
+ self.testOnce()
+
+
+
+if __name__ == '__main__':
+ unittest.main()
+
+
diff --git a/khashmir/khashmir.py b/khashmir/khashmir.py
new file mode 100644
index 0000000..d939f67
--- /dev/null
+++ b/khashmir/khashmir.py
@@ -0,0 +1,442 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+import const
+from socket import gethostbyname
+
+from BitTorrent.platform import bttime as time
+
+from sha import sha
+import re
+from BitTorrent.defaultargs import common_options, rare_options
+from BitTorrent.RawServer_magic import RawServer
+
+from ktable import KTable, K
+from knode import *
+from kstore import KStore
+from khash import newID, newIDInRange
+
+from util import packNodes
+from actions import FindNode, GetValue, KeyExpirer, StoreValue
+import krpc
+
+import sys
+import os
+import traceback
+
+from BitTorrent.bencode import bencode, bdecode
+
+from BitTorrent.defer import Deferred
+from random import randrange
+from kstore import sample
+
+from threading import Event, Thread
+
+ip_pat = re.compile('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
+
+class KhashmirDBExcept(Exception):
+ pass
+
+def foo(bytes):
+ pass
+
+# this is the base class, has base functionality and find node, no key-value mappings
+class KhashmirBase:
+ _Node = KNodeBase
+ def __init__(self, host, port, data_dir, rawserver=None, max_ul_rate=1024, checkpoint=True, errfunc=None, rlcount=foo, config={'pause':False, 'max_rate_period':20}):
+ if rawserver:
+ self.rawserver = rawserver
+ else:
+ self.flag = Event()
+ d = dict([(x[0],x[1]) for x in common_options + rare_options])
+ self.rawserver = RawServer(self.flag, d)
+ self.max_ul_rate = max_ul_rate
+ self.socket = None
+ self.config = config
+ self.setup(host, port, data_dir, rlcount, checkpoint)
+
+ def setup(self, host, port, data_dir, rlcount, checkpoint=True):
+ self.host = host
+ self.port = port
+ self.ddir = data_dir
+ self.store = KStore()
+ self.pingcache = {}
+ self.socket = self.rawserver.create_udpsocket(self.port, self.host, False)
+ self.udp = krpc.hostbroker(self, (self.host, self.port), self.socket, self.rawserver.add_task, self.max_ul_rate, self.config, rlcount)
+ self._load()
+ self.rawserver.start_listening_udp(self.socket, self.udp)
+ self.last = time()
+ KeyExpirer(self.store, self.rawserver.add_task)
+ self.refreshTable(force=1)
+ if checkpoint:
+ self.rawserver.add_task(self.findCloseNodes, 30, (lambda a: a, True))
+ self.rawserver.add_task(self.checkpoint, 60, (1,))
+
+ def Node(self):
+ n = self._Node(self.udp.connectionForAddr)
+ n.table = self
+ return n
+
+ def __del__(self):
+ if self.socket is not None:
+ self.rawserver.stop_listening_udp(self.socket)
+ self.socket.close()
+
+ def _load(self):
+ do_load = False
+ try:
+ s = open(os.path.join(self.ddir, "routing_table"), 'r').read()
+ dict = bdecode(s)
+ except:
+ id = newID()
+ else:
+ id = dict['id']
+ do_load = True
+
+ self.node = self._Node(self.udp.connectionForAddr).init(id, self.host, self.port)
+ self.table = KTable(self.node)
+ if do_load:
+ self._loadRoutingTable(dict['rt'])
+
+
+ def checkpoint(self, auto=0):
+ d = {}
+ d['id'] = self.node.id
+ d['rt'] = self._dumpRoutingTable()
+ try:
+ f = open(os.path.join(self.ddir, "routing_table"), 'wb')
+ f.write(bencode(d))
+ f.close()
+ except Exception, e:
+ #XXX real error here
+ print ">>> unable to dump routing table!", str(e)
+ pass
+
+
+ if auto:
+ self.rawserver.add_task(self.checkpoint,
+ randrange(int(const.CHECKPOINT_INTERVAL * .9),
+ int(const.CHECKPOINT_INTERVAL * 1.1)),
+ (1,))
+
+ def _loadRoutingTable(self, nodes):
+ """
+ load routing table nodes from database
+ it's usually a good idea to call refreshTable(force=1) after loading the table
+ """
+ for rec in nodes:
+ n = self.Node().initWithDict(rec)
+ self.table.insertNode(n, contacted=0, nocheck=True)
+
+ def _dumpRoutingTable(self):
+ """
+ save routing table nodes to the database
+ """
+ l = []
+ for bucket in self.table.buckets:
+ for node in bucket.l:
+ l.append({'id':node.id, 'host':node.host, 'port':node.port, 'age':int(node.age)})
+ return l
+
+
+ def _addContact(self, host, port, callback=None):
+ """
+ ping this node and add the contact info to the table on pong!
+ """
+ n =self.Node().init(const.NULL_ID, host, port)
+ try:
+ self.sendPing(n, callback=callback)
+ except krpc.KRPCSelfNodeError:
+ # our own node
+ pass
+
+
+ #######
+ ####### LOCAL INTERFACE - use these methods!
+ def addContact(self, ip, port, callback=None):
+ """
+ ping this node and add the contact info to the table on pong!
+ """
+ if ip_pat.match(ip):
+ self._addContact(ip, port)
+ else:
+ def go(ip=ip, port=port):
+ ip = gethostbyname(ip)
+ self.rawserver.external_add_task(self._addContact, 0, (ip, port))
+ t = Thread(target=go)
+ t.start()
+
+
+ ## this call is async!
+ def findNode(self, id, callback, errback=None):
+ """ returns the contact info for node, or the k closest nodes, from the global table """
+ # get K nodes out of local table/cache, or the node we want
+ nodes = self.table.findNodes(id, invalid=True)
+ l = [x for x in nodes if x.invalid]
+ if len(l) > 4:
+ nodes = sample(l , 4) + self.table.findNodes(id, invalid=False)[:4]
+
+ d = Deferred()
+ if errback:
+ d.addCallbacks(callback, errback)
+ else:
+ d.addCallback(callback)
+ if len(nodes) == 1 and nodes[0].id == id :
+ d.callback(nodes)
+ else:
+ # create our search state
+ state = FindNode(self, id, d.callback, self.rawserver.add_task)
+ self.rawserver.external_add_task(state.goWithNodes, 0, (nodes,))
+
+ def insertNode(self, n, contacted=1):
+ """
+ insert a node in our local table, pinging oldest contact in bucket, if necessary
+
+ If all you have is a host/port, then use addContact, which calls this method after
+ receiving the PONG from the remote node. The reason for the seperation is we can't insert
+ a node into the table without it's peer-ID. That means of course the node passed into this
+ method needs to be a properly formed Node object with a valid ID.
+ """
+ old = self.table.insertNode(n, contacted=contacted)
+ if old and old != n:
+ if not old.inPing():
+ self.checkOldNode(old, n, contacted)
+ else:
+ l = self.pingcache.get(old.id, [])
+ if len(l) < 10 or contacted:
+ l.append((n, contacted))
+ self.pingcache[old.id] = l
+
+
+
+ def checkOldNode(self, old, new, contacted=False):
+ ## these are the callbacks used when we ping the oldest node in a bucket
+
+ def cmp(a, b):
+ if a[1] == 1 and b[1] == 0:
+ return -1
+ elif b[1] == 1 and a[1] == 0:
+ return 1
+ else:
+ return 0
+
+ def _staleNodeHandler(dict, old=old, new=new, contacted=contacted):
+ """ called if the pinged node never responds """
+ if old.fails >= 2:
+ l = self.pingcache.get(old.id, [])
+ l.sort(cmp)
+ if l:
+ n, nc = l[0]
+ if (not contacted) and nc:
+ l = l[1:] + [(new, contacted)]
+ new = n
+ contacted = nc
+ o = self.table.replaceStaleNode(old, new)
+ if o and o != new:
+ self.checkOldNode(o, new)
+ try:
+ self.pingcache[o.id] = self.pingcache[old.id]
+ del(self.pingcache[old.id])
+ except KeyError:
+ pass
+ else:
+ if l:
+ del(self.pingcache[old.id])
+ l.sort(cmp)
+ for node in l:
+ self.insertNode(node[0], node[1])
+ else:
+ l = self.pingcache.get(old.id, [])
+ if l:
+ del(self.pingcache[old.id])
+ self.insertNode(new, contacted)
+ for node in l:
+ self.insertNode(node[0], node[1])
+
+ def _notStaleNodeHandler(dict, old=old, new=new, contacted=contacted):
+ """ called when we get a pong from the old node """
+ self.table.insertNode(old, True)
+ self.insertNode(new, contacted)
+ l = self.pingcache.get(old.id, [])
+ l.sort(cmp)
+ for node in l:
+ self.insertNode(node[0], node[1])
+ try:
+ del(self.pingcache[old.id])
+ except KeyError:
+ pass
+ try:
+ df = old.ping(self.node.id)
+ except krpc.KRPCSelfNodeError:
+ pass
+ df.addCallbacks(_notStaleNodeHandler, _staleNodeHandler)
+
+ def sendPing(self, node, callback=None):
+ """
+ ping a node
+ """
+ try:
+ df = node.ping(self.node.id)
+ except krpc.KRPCSelfNodeError:
+ pass
+ else:
+ ## these are the callbacks we use when we issue a PING
+ def _pongHandler(dict, node=node, table=self.table, callback=callback):
+ _krpc_sender = dict['_krpc_sender']
+ dict = dict['rsp']
+ sender = {'id' : dict['id']}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ table.insertNode(n)
+ if callback:
+ callback()
+ def _defaultPong(err, node=node, table=self.table, callback=callback):
+ if callback:
+ callback()
+
+ df.addCallbacks(_pongHandler,_defaultPong)
+
+ def findCloseNodes(self, callback=lambda a: a, auto=False):
+ """
+ This does a findNode on the ID one away from our own.
+ This will allow us to populate our table with nodes on our network closest to our own.
+ This is called as soon as we start up with an empty table
+ """
+ if not self.config['pause']:
+ id = self.node.id[:-1] + chr((ord(self.node.id[-1]) + 1) % 256)
+ self.findNode(id, callback)
+ if auto:
+ if not self.config['pause']:
+ self.refreshTable()
+ self.rawserver.external_add_task(self.findCloseNodes, randrange(int(const.FIND_CLOSE_INTERVAL *0.9),
+ int(const.FIND_CLOSE_INTERVAL *1.1)), (lambda a: True, True))
+
+ def refreshTable(self, force=0):
+ """
+ force=1 will refresh table regardless of last bucket access time
+ """
+ def callback(nodes):
+ pass
+
+ refresh = [bucket for bucket in self.table.buckets if force or (len(bucket.l) < K) or len(filter(lambda a: a.invalid, bucket.l)) or (time() - bucket.lastAccessed > const.BUCKET_STALENESS)]
+ for bucket in refresh:
+ id = newIDInRange(bucket.min, bucket.max)
+ self.findNode(id, callback)
+
+ def stats(self):
+ """
+ Returns (num_contacts, num_nodes)
+ num_contacts: number contacts in our routing table
+ num_nodes: number of nodes estimated in the entire dht
+ """
+ num_contacts = reduce(lambda a, b: a + len(b.l), self.table.buckets, 0)
+ num_nodes = const.K * (2**(len(self.table.buckets) - 1))
+ return {'num_contacts':num_contacts, 'num_nodes':num_nodes}
+
+ def krpc_ping(self, id, _krpc_sender):
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+ return {"id" : self.node.id}
+
+ def krpc_find_node(self, target, id, _krpc_sender):
+ nodes = self.table.findNodes(target, invalid=False)
+ nodes = map(lambda node: node.senderDict(), nodes)
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+ return {"nodes" : packNodes(nodes), "id" : self.node.id}
+
+
+## This class provides read-only access to the DHT, valueForKey
+## you probably want to use this mixin and provide your own write methods
+class KhashmirRead(KhashmirBase):
+ _Node = KNodeRead
+ def retrieveValues(self, key):
+ try:
+ l = self.store[key]
+ except KeyError:
+ l = []
+ return l
+ ## also async
+ def valueForKey(self, key, callback, searchlocal = 1):
+ """ returns the values found for key in global table
+ callback will be called with a list of values for each peer that returns unique values
+ final callback will be an empty list - probably should change to 'more coming' arg
+ """
+ nodes = self.table.findNodes(key)
+
+ # get locals
+ if searchlocal:
+ l = self.retrieveValues(key)
+ if len(l) > 0:
+ self.rawserver.external_add_task(callback, 0, (l,))
+ else:
+ l = []
+
+ # create our search state
+ state = GetValue(self, key, callback, self.rawserver.add_task)
+ self.rawserver.external_add_task(state.goWithNodes, 0, (nodes, l))
+
+ def krpc_find_value(self, key, id, _krpc_sender):
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+
+ l = self.retrieveValues(key)
+ if len(l) > 0:
+ return {'values' : l, "id": self.node.id}
+ else:
+ nodes = self.table.findNodes(key, invalid=False)
+ nodes = map(lambda node: node.senderDict(), nodes)
+ return {'nodes' : packNodes(nodes), "id": self.node.id}
+
+### provides a generic write method, you probably don't want to deploy something that allows
+### arbitrary value storage
+class KhashmirWrite(KhashmirRead):
+ _Node = KNodeWrite
+ ## async, callback indicates nodes we got a response from (but no guarantee they didn't drop it on the floor)
+ def storeValueForKey(self, key, value, callback=None):
+ """ stores the value for key in the global table, returns immediately, no status
+ in this implementation, peers respond but don't indicate status to storing values
+ a key can have many values
+ """
+ def _storeValueForKey(nodes, key=key, value=value, response=callback , table=self.table):
+ if not response:
+ # default callback
+ def _storedValueHandler(sender):
+ pass
+ response=_storedValueHandler
+ action = StoreValue(self, key, value, response, self.rawserver.add_task)
+ self.rawserver.external_add_task(action.goWithNodes, 0, (nodes,))
+
+ # this call is asynch
+ self.findNode(key, _storeValueForKey)
+
+ def krpc_store_value(self, key, value, id, _krpc_sender):
+ t = "%0.6f" % time()
+ self.store[key] = value
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+ return {"id" : self.node.id}
+
+# the whole shebang, for testing
+class Khashmir(KhashmirWrite):
+ _Node = KNodeWrite
diff --git a/khashmir/knet.py b/khashmir/knet.py
new file mode 100644
index 0000000..3baf1e9
--- /dev/null
+++ b/khashmir/knet.py
@@ -0,0 +1,76 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+#
+# knet.py
+# create a network of khashmir nodes
+# usage: knet.py <num_nodes> <start_port> <ip_address>
+
+from khashmir import Khashmir
+from random import randrange
+import sys, os
+
+class Network:
+ def __init__(self, size=0, startport=5555, localip='127.0.0.1'):
+ self.num = size
+ self.startport = startport
+ self.localip = localip
+
+ def _done(self, val):
+ self.done = 1
+
+ def setUp(self):
+ self.kfiles()
+ self.l = []
+ for i in range(self.num):
+ self.l.append(Khashmir('', self.startport + i, '/tmp/kh%s.db' % (self.startport + i)))
+ reactor.iterate()
+ reactor.iterate()
+
+ for i in self.l:
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ reactor.iterate()
+ reactor.iterate()
+ reactor.iterate()
+
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ reactor.iterate()
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ reactor.iterate()
+
+ def tearDown(self):
+ for i in self.l:
+ i.listenport.stopListening()
+ self.kfiles()
+
+ def kfiles(self):
+ for i in range(self.startport, self.startport+self.num):
+ try:
+ os.unlink('/tmp/kh%s.db' % i)
+ except:
+ pass
+
+ reactor.iterate()
+
+if __name__ == "__main__":
+ n = Network(int(sys.argv[1]), int(sys.argv[2]), sys.argv[3])
+ n.setUp()
+ try:
+ reactor.run()
+ finally:
+ n.tearDown()
diff --git a/khashmir/knode.py b/khashmir/knode.py
new file mode 100644
index 0000000..560252a
--- /dev/null
+++ b/khashmir/knode.py
@@ -0,0 +1,82 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from node import Node
+from BitTorrent.defer import Deferred
+from const import NULL_ID
+from krpc import KRPCProtocolError
+
+class IDChecker:
+ def __init__(self, id):
+ self.id = id
+
+class KNodeBase(Node):
+ def __init__(self, cfa):
+ Node.__init__(self)
+ self.cfa = cfa
+
+ def conn(self):
+ return self.cfa((self.host, self.port))
+
+ def checkSender(self, dict):
+ try:
+ senderid = dict['rsp']['id']
+ except KeyError:
+ raise KRPCProtocolError, "No peer id in response."
+ else:
+ if self.id != NULL_ID and senderid != self.id:
+ self.table.table.invalidateNode(self)
+ else:
+ if self.id == NULL_ID:
+ self.id = senderid
+ self.table.insertNode(self, contacted=1)
+ return dict
+
+ def errBack(self, err):
+ self.table.table.nodeFailed(self)
+ return err[0]
+
+ def ping(self, id):
+ df = self.conn().sendRequest('ping', {"id":id})
+ self.conn().pinging = True
+ def endping(x):
+ self.conn().pinging = False
+ return x
+ df.addCallbacks(endping, endping)
+ df.addCallbacks(self.checkSender, self.errBack)
+ return df
+
+ def findNode(self, target, id):
+ df = self.conn().sendRequest('find_node', {"target" : target, "id": id})
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
+
+ def inPing(self):
+ return self.conn().pinging
+
+class KNodeRead(KNodeBase):
+ def findValue(self, key, id):
+ df = self.conn().sendRequest('find_value', {"key" : key, "id" : id})
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
+
+class KNodeWrite(KNodeRead):
+ def storeValue(self, key, value, id):
+ df = self.conn().sendRequest('store_value', {"key" : key, "value" : value, "id": id})
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
+ def storeValues(self, key, value, id):
+ df = self.conn().sendRequest('store_values', {"key" : key, "values" : value, "id": id})
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
diff --git a/khashmir/krpc.py b/khashmir/krpc.py
new file mode 100644
index 0000000..86c9973
--- /dev/null
+++ b/khashmir/krpc.py
@@ -0,0 +1,240 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from BitTorrent.defer import Deferred
+from BitTorrent.bencode import bencode, bdecode
+import socket
+from BitTorrent.RawServer_magic import Handler
+from BitTorrent.platform import bttime
+import time
+from math import log10
+
+import sys
+from traceback import print_exc
+
+from khash import distance
+from cache import Cache
+from KRateLimiter import KRateLimiter
+from hammerlock import Hammerlock
+
+from const import *
+
+# commands
+TID = 't'
+REQ = 'q'
+RSP = 'r'
+TYP = 'y'
+ARG = 'a'
+ERR = 'e'
+
+class KRPCFailSilently(Exception):
+ pass
+
+class KRPCProtocolError(Exception):
+ pass
+
+class KRPCServerError(Exception):
+ pass
+
+class KRPCSelfNodeError(Exception):
+ pass
+
+class hostbroker(Handler):
+ def __init__(self, server, addr, transport, call_later, max_ul_rate, config, rlcount):
+ self.server = server
+ self.addr = addr
+ self.transport = transport
+ self.rltransport = KRateLimiter(transport, max_ul_rate, call_later, rlcount, config['max_rate_period'])
+ self.call_later = call_later
+ self.connections = Cache(touch_on_access=True)
+ self.hammerlock = Hammerlock(100, call_later)
+ self.expire_connections(loop=True)
+ self.config = config
+ if not self.config.has_key('pause'):
+ self.config['pause'] = False
+
+ def expire_connections(self, loop=False):
+ self.connections.expire(bttime() - KRPC_CONNECTION_CACHE_TIME)
+ if loop:
+ self.call_later(self.expire_connections, KRPC_CONNECTION_CACHE_TIME, (True,))
+
+ def data_came_in(self, addr, datagram):
+ #if addr != self.addr:
+ if not self.config['pause'] and self.hammerlock.check(addr):
+ c = self.connectionForAddr(addr)
+ c.datagramReceived(datagram, addr)
+
+ def connection_lost(self, socket):
+ ## this is like, bad
+ print ">>> connection lost!", socket
+
+ def connectionForAddr(self, addr):
+ if addr == self.addr:
+ raise KRPCSelfNodeError()
+ if not self.connections.has_key(addr):
+ conn = KRPC(addr, self.server, self.transport, self.rltransport, self.call_later)
+ self.connections[addr] = conn
+ else:
+ conn = self.connections[addr]
+ return conn
+
+
+## connection
+class KRPC:
+ noisy = 0
+ def __init__(self, addr, server, transport, rltransport, call_later):
+ self.call_later = call_later
+ self.transport = transport
+ self.rltransport = rltransport
+ self.factory = server
+ self.addr = addr
+ self.tids = {}
+ self.mtid = 0
+ self.pinging = False
+
+ def sendErr(self, addr, tid, code, msg):
+ ## send error
+ out = bencode({TID:tid, TYP:ERR, ERR :(code, msg)})
+ olen = len(out)
+ self.rltransport.sendto(out, 0, addr)
+ return olen
+
+ def datagramReceived(self, str, addr):
+ # bdecode
+ try:
+ msg = bdecode(str)
+ except Exception, e:
+ if self.noisy:
+ print "response decode error: " + `e`, `str`
+ else:
+ #if self.noisy:
+ # print msg
+ # look at msg type
+ if msg[TYP] == REQ:
+ ilen = len(str)
+ # if request
+ # tell factory to handle
+ f = getattr(self.factory ,"krpc_" + msg[REQ], None)
+ msg[ARG]['_krpc_sender'] = self.addr
+ if f and callable(f):
+ try:
+ ret = apply(f, (), msg[ARG])
+ except KRPCFailSilently:
+ pass
+ except KRPCServerError, e:
+ olen = self.sendErr(addr, msg[TID], 202, "Server Error: %s" % e.args[0])
+ except KRPCProtocolError, e:
+ olen = self.sendErr(addr, msg[TID], 204, "Protocol Error: %s" % e.args[0])
+ except Exception, e:
+ print_exc(20)
+ olen = self.sendErr(addr, msg[TID], 202, "Server Error")
+ else:
+ if ret:
+ # make response
+ out = bencode({TID : msg[TID], TYP : RSP, RSP : ret})
+ else:
+ out = bencode({TID : msg[TID], TYP : RSP, RSP : {}})
+ # send response
+ olen = len(out)
+ self.rltransport.sendto(out, 0, addr)
+
+ else:
+ if self.noisy:
+ #print "don't know about method %s" % msg[REQ]
+ pass
+ # unknown method
+ olen = self.sendErr(addr, msg[TID], *KERR_METHOD_UNKNOWN)
+ if self.noisy:
+ try:
+ ndist = 10 * log10(2**160 * 1.0 / distance(self.factory.node.id, msg[ARG]['id']))
+ ndist = int(ndist)
+ except OverflowError:
+ ndist = 999
+
+ h = None
+ if msg[ARG].has_key('target'):
+ h = msg[ARG]['target']
+ elif msg[ARG].has_key('info_hash'):
+ h = msg[ARG]['info_hash']
+ else:
+ tdist = '-'
+
+ if h != None:
+ try:
+ tdist = 10 * log10(2**160 * 1.0 / distance(self.factory.node.id, h))
+ tdist = int(tdist)
+ except OverflowError:
+ tdist = 999
+
+ t = time.localtime()
+ t = "%2d-%2d-%2d %2d:%2d:%2d" % (t[0], t[1], t[2], t[3], t[4], t[5])
+ print "%s %s %s >>> %s - %s %s %s - %s %s" % (t,
+ msg[ARG]['id'].encode('base64')[:4],
+ addr,
+ self.factory.node.port,
+ ilen,
+ msg[REQ],
+ olen,
+ ndist,
+ tdist)
+ elif msg[TYP] == RSP:
+ # if response
+ # lookup tid
+ if self.tids.has_key(msg[TID]):
+ df = self.tids[msg[TID]]
+ # callback
+ del(self.tids[msg[TID]])
+ df.callback({'rsp' : msg[RSP], '_krpc_sender': addr})
+ else:
+ # no tid, this transaction timed out already...
+ pass
+
+ elif msg[TYP] == ERR:
+ # if error
+ # lookup tid
+ if self.tids.has_key(msg[TID]):
+ df = self.tids[msg[TID]]
+ # callback
+ df.errback(msg[ERR])
+ del(self.tids[msg[TID]])
+ else:
+ # day late and dollar short
+ pass
+ else:
+ # unknown message type
+ df = self.tids[msg[TID]]
+ # callback
+ df.errback((KRPC_ERROR_RECEIVED_UNKNOWN, _("received unknown message type")))
+ del(self.tids[msg[TID]])
+
+ def sendRequest(self, method, args):
+ # make message
+ # send it
+ msg = {TID : chr(self.mtid), TYP : REQ, REQ : method, ARG : args}
+ self.mtid = (self.mtid + 1) % 256
+ s = bencode(msg)
+ d = Deferred()
+ self.tids[msg[TID]] = d
+ self.call_later(self.timeOut, KRPC_TIMEOUT, (msg[TID],))
+ self.call_later(self._send, 0, (s, d))
+ return d
+
+ def timeOut(self, id):
+ if self.tids.has_key(id):
+ df = self.tids[id]
+ del(self.tids[id])
+ df.errback((KRPC_ERROR_TIMEOUT, _("timeout")))
+
+ def _send(self, s, d):
+ try:
+ self.transport.sendto(s, 0, self.addr)
+ except socket.error:
+ d.errback((KRPC_SOCKET_ERROR, _("socket error")))
+
diff --git a/khashmir/kstore.py b/khashmir/kstore.py
new file mode 100644
index 0000000..5c01200
--- /dev/null
+++ b/khashmir/kstore.py
@@ -0,0 +1,119 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+try:
+ from random import sample
+except ImportError:
+ from random import choice
+ def sample(l, n):
+ if len(l) <= n:
+ return l
+ d = {}
+ while len(d) < n:
+ d[choice(l)] = 1
+ return d.keys()
+
+from BitTorrent.platform import bttime as time
+
+class KItem:
+ def __init__(self, key, value):
+ self.t = time()
+ self.k = key
+ self.v = value
+ def __cmp__(self, a):
+ # same value = same item, only used to keep dupes out of db
+ if self.v == a.v:
+ return 0
+
+ # compare by time
+ if self.t < a.t:
+ return -1
+ elif self.t > a.t:
+ return 1
+ else:
+ return 0
+
+ def __hash__(self):
+ return self.v.__hash__()
+
+ def __repr__(self):
+ return `(self.k, self.v, time() - self.t)`
+
+## in memory data store for distributed tracker
+## keeps a list of values per key in dictionary
+## keeps expiration for each key in a queue
+## can efficiently expire all values older than a given time
+## can insert one val at a time, or a list: ks['key'] = 'value' or ks['key'] = ['v1', 'v2', 'v3']
+class KStore:
+ def __init__(self):
+ self.d = {}
+ self.q = []
+
+ def __getitem__(self, key):
+ return [x.v for x in self.d[key]]
+
+ def __setitem__(self, key, value):
+ if type(value) == type([]):
+ [self.__setitem__(key, v) for v in value]
+ return
+ x = KItem(key, value)
+ try:
+ l = self.d[key]
+ except KeyError:
+ self.d[key] = [x]
+ else:
+ # this is slow
+ try:
+ i = l.index(x)
+ del(l[i])
+ except ValueError:
+ pass
+ l.insert(0, x)
+ self.q.append(x)
+
+ def __delitem__(self, key):
+ del(self.d[key])
+
+ def __len__(self):
+ return len(self.d)
+
+ def keys(self):
+ return self.d.keys()
+
+ def values(self):
+ return [self[key] for key in self.keys()]
+
+ def items(self):
+ return [(key, self[key]) for key in self.keys()]
+
+ def expire(self, t):
+ #.expire values inserted prior to t
+ try:
+ while self.q[0].t <= t:
+ x = self.q.pop(0)
+ try:
+ l = self.d[x.k]
+ try:
+ while l[-1].t <= t:
+ l.pop()
+ except IndexError:
+ del(self.d[x.k])
+ except KeyError:
+ pass
+ except IndexError:
+ pass
+
+ def sample(self, key, n):
+ # returns n random values of key, or all values if less than n
+ try:
+ l = [x.v for x in sample(self.d[key], n)]
+ except ValueError:
+ l = [x.v for x in self.d[key]]
+ return l
diff --git a/khashmir/ktable.py b/khashmir/ktable.py
new file mode 100644
index 0000000..e0a07b4
--- /dev/null
+++ b/khashmir/ktable.py
@@ -0,0 +1,338 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from BitTorrent.platform import bttime as time
+from bisect import *
+from types import *
+
+import khash as hash
+import const
+from const import K, HASH_LENGTH, NULL_ID, MAX_FAILURES, MIN_PING_INTERVAL
+from node import Node
+
+
+def ls(a, b):
+ return cmp(a.lastSeen, b.lastSeen)
+
+class KTable(object):
+ __slots__ = ('node', 'buckets')
+ """local routing table for a kademlia like distributed hash table"""
+ def __init__(self, node):
+ # this is the root node, a.k.a. US!
+ self.node = node
+ self.buckets = [KBucket([], 0L, 2L**HASH_LENGTH)]
+ self.insertNode(node)
+
+ def _bucketIndexForInt(self, num):
+ """the index of the bucket that should hold int"""
+ return bisect_left(self.buckets, num)
+
+ def bucketForInt(self, num):
+ return self.buckets[self._bucketIndexForInt(num)]
+
+ def findNodes(self, id, invalid=True):
+ """
+ return K nodes in our own local table closest to the ID.
+ """
+
+ if isinstance(id, str):
+ num = hash.intify(id)
+ elif isinstance(id, Node):
+ num = id.num
+ elif isinstance(id, int) or isinstance(id, long):
+ num = id
+ else:
+ raise TypeError, "findNodes requires an int, string, or Node"
+
+ nodes = []
+ i = self._bucketIndexForInt(num)
+
+ # if this node is already in our table then return it
+ try:
+ node = self.buckets[i].getNodeWithInt(num)
+ except ValueError:
+ pass
+ else:
+ return [node]
+
+ # don't have the node, get the K closest nodes
+ nodes = nodes + self.buckets[i].l
+ if not invalid:
+ nodes = [a for a in nodes if not a.invalid]
+ if len(nodes) < K:
+ # need more nodes
+ min = i - 1
+ max = i + 1
+ while len(nodes) < K and (min >= 0 or max < len(self.buckets)):
+ #ASw: note that this requires K be even
+ if min >= 0:
+ nodes = nodes + self.buckets[min].l
+ if max < len(self.buckets):
+ nodes = nodes + self.buckets[max].l
+ min = min - 1
+ max = max + 1
+ if not invalid:
+ nodes = [a for a in nodes if not a.invalid]
+
+ nodes.sort(lambda a, b, num=num: cmp(num ^ a.num, num ^ b.num))
+ return nodes[:K]
+
+ def _splitBucket(self, a):
+ diff = (a.max - a.min) / 2
+ b = KBucket([], a.max - diff, a.max)
+ self.buckets.insert(self.buckets.index(a.min) + 1, b)
+ a.max = a.max - diff
+ # transfer nodes to new bucket
+ for anode in a.l[:]:
+ if anode.num >= a.max:
+ a.removeNode(anode)
+ b.addNode(anode)
+
+ def replaceStaleNode(self, stale, new):
+ """this is used by clients to replace a node returned by insertNode after
+ it fails to respond to a Pong message"""
+ i = self._bucketIndexForInt(stale.num)
+
+ if self.buckets[i].hasNode(stale):
+ self.buckets[i].removeNode(stale)
+ if new and self.buckets[i].hasNode(new):
+ self.buckets[i].seenNode(new)
+ elif new:
+ self.buckets[i].addNode(new)
+
+ return
+
+ def insertNode(self, node, contacted=1, nocheck=False):
+ """
+ this insert the node, returning None if successful, returns the oldest node in the bucket if it's full
+ the caller responsible for pinging the returned node and calling replaceStaleNode if it is found to be stale!!
+ contacted means that yes, we contacted THEM and we know the node is reachable
+ """
+ if node.id == NULL_ID or node.id == self.node.id:
+ return
+
+ if contacted:
+ node.updateLastSeen()
+
+ # get the bucket for this node
+ i = self._bucketIndexForInt(node.num)
+ # check to see if node is in the bucket already
+ if self.buckets[i].hasNode(node):
+ it = self.buckets[i].l.index(node.num)
+ xnode = self.buckets[i].l[it]
+ if contacted:
+ node.age = xnode.age
+ self.buckets[i].seenNode(node)
+ elif xnode.lastSeen != 0 and xnode.port == node.port and xnode.host == node.host:
+ xnode.updateLastSeen()
+ return
+
+ # we don't have this node, check to see if the bucket is full
+ if not self.buckets[i].bucketFull():
+ # no, append this node and return
+ self.buckets[i].addNode(node)
+ return
+
+ # full bucket, check to see if any nodes are invalid
+ t = time()
+ invalid = [x for x in self.buckets[i].invalid.values() if x.invalid]
+ if len(invalid) and not nocheck:
+ invalid.sort(ls)
+ while invalid and not self.buckets[i].hasNode(invalid[0]):
+ del(self.buckets[i].invalid[invalid[0].num])
+ invalid = invalid[1:]
+ if invalid and (invalid[0].lastSeen == 0 and invalid[0].fails < MAX_FAILURES):
+ return invalid[0]
+ elif invalid:
+ self.replaceStaleNode(invalid[0], node)
+ return
+
+ stale = [n for n in self.buckets[i].l if (t - n.lastSeen) > MIN_PING_INTERVAL]
+ if len(stale) and not nocheck:
+ stale.sort(ls)
+ return stale[0]
+
+ # bucket is full and all nodes are valid, check to see if self.node is in the bucket
+ if not (self.buckets[i].min <= self.node < self.buckets[i].max):
+ return
+
+ # this bucket is full and contains our node, split the bucket
+ if len(self.buckets) >= HASH_LENGTH:
+ # our table is FULL, this is really unlikely
+ print "Hash Table is FULL! Increase K!"
+ return
+
+ self._splitBucket(self.buckets[i])
+
+ # now that the bucket is split and balanced, try to insert the node again
+ return self.insertNode(node, contacted)
+
+ def justSeenNode(self, id):
+ """call this any time you get a message from a node
+ it will update it in the table if it's there """
+ try:
+ n = self.findNodes(id)[0]
+ except IndexError:
+ return None
+ else:
+ tstamp = n.lastSeen
+ n.updateLastSeen()
+ bucket = self.bucketForInt(n.num)
+ bucket.seenNode(n)
+ return tstamp
+
+ def invalidateNode(self, n):
+ """
+ forget about node n - use when you know that node is invalid
+ """
+ n.invalid = True
+ bucket = self.bucketForInt(n.num)
+ bucket.invalidateNode(n)
+
+ def nodeFailed(self, node):
+ """ call this when a node fails to respond to a message, to invalidate that node """
+ try:
+ n = self.findNodes(node.num)[0]
+ except IndexError:
+ return None
+ else:
+ if n.msgFailed() >= const.MAX_FAILURES:
+ self.invalidateNode(n)
+
+ def numPeers(self):
+ """ estimated number of connectable nodes in global table """
+ return 8 * (2 ** (len(self.buckets) - 1))
+
+class KBucket(object):
+ __slots__ = ('min', 'max', 'lastAccessed', 'l', 'index', 'invalid')
+ def __init__(self, contents, min, max):
+ self.l = contents
+ self.index = {}
+ self.invalid = {}
+ self.min = min
+ self.max = max
+ self.lastAccessed = time()
+
+ def touch(self):
+ self.lastAccessed = time()
+
+ def lacmp(self, a, b):
+ if a.lastSeen > b.lastSeen:
+ return 1
+ elif b.lastSeen > a.lastSeen:
+ return -1
+ return 0
+
+ def sort(self):
+ self.l.sort(self.lacmp)
+
+ def getNodeWithInt(self, num):
+ try:
+ node = self.index[num]
+ except KeyError:
+ raise ValueError
+ return node
+
+ def addNode(self, node):
+ if len(self.l) >= K:
+ return
+ if self.index.has_key(node.num):
+ return
+ self.l.append(node)
+ self.index[node.num] = node
+ self.touch()
+
+ def removeNode(self, node):
+ assert self.index.has_key(node.num)
+ del(self.l[self.l.index(node.num)])
+ del(self.index[node.num])
+ try:
+ del(self.invalid[node.num])
+ except KeyError:
+ pass
+ self.touch()
+
+ def invalidateNode(self, node):
+ self.invalid[node.num] = node
+
+ def seenNode(self, node):
+ try:
+ del(self.invalid[node.num])
+ except KeyError:
+ pass
+ it = self.l.index(node.num)
+ del(self.l[it])
+ self.l.append(node)
+ self.index[node.num] = node
+
+ def hasNode(self, node):
+ return self.index.has_key(node.num)
+
+ def bucketFull(self):
+ return len(self.l) >= K
+
+ def __repr__(self):
+ return "<KBucket %d items (%d to %d)>" % (len(self.l), self.min, self.max)
+
+ ## Comparators
+ # necessary for bisecting list of buckets with a hash expressed as an integer or a distance
+ # compares integer or node object with the bucket's range
+ def __lt__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.max <= a
+ def __le__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.min < a
+ def __gt__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.min > a
+ def __ge__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.max >= a
+ def __eq__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.min <= a and self.max > a
+ def __ne__(self, a):
+ if isinstance(a, Node): a = a.num
+ return self.min >= a or self.max < a
+
+
+### UNIT TESTS ###
+import unittest
+
+class TestKTable(unittest.TestCase):
+ def setUp(self):
+ self.a = Node().init(hash.newID(), 'localhost', 2002)
+ self.t = KTable(self.a)
+
+ def testAddNode(self):
+ self.b = Node().init(hash.newID(), 'localhost', 2003)
+ self.t.insertNode(self.b)
+ self.assertEqual(len(self.t.buckets[0].l), 1)
+ self.assertEqual(self.t.buckets[0].l[0], self.b)
+
+ def testRemove(self):
+ self.testAddNode()
+ self.t.invalidateNode(self.b)
+ self.assertEqual(len(self.t.buckets[0].l), 0)
+
+ def testFail(self):
+ self.testAddNode()
+ for i in range(const.MAX_FAILURES - 1):
+ self.t.nodeFailed(self.b)
+ self.assertEqual(len(self.t.buckets[0].l), 1)
+ self.assertEqual(self.t.buckets[0].l[0], self.b)
+
+ self.t.nodeFailed(self.b)
+ self.assertEqual(len(self.t.buckets[0].l), 0)
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/khashmir/node.py b/khashmir/node.py
new file mode 100644
index 0000000..65a48ef
--- /dev/null
+++ b/khashmir/node.py
@@ -0,0 +1,95 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+import khash
+from BitTorrent.platform import bttime as time
+from types import *
+
+class Node:
+ """encapsulate contact info"""
+ def __init__(self):
+ self.fails = 0
+ self.lastSeen = 0
+ self.invalid = True
+ self.id = self.host = self.port = ''
+ self.age = time()
+
+ def init(self, id, host, port):
+ self.id = id
+ self.num = khash.intify(id)
+ self.host = host
+ self.port = port
+ self._senderDict = {'id': self.id, 'port' : self.port, 'host' : self.host}
+ return self
+
+ def initWithDict(self, dict):
+ self._senderDict = dict
+ self.id = dict['id']
+ self.num = khash.intify(self.id)
+ self.port = dict['port']
+ self.host = dict['host']
+ self.age = dict.get('age', self.age)
+ return self
+
+ def updateLastSeen(self):
+ self.lastSeen = time()
+ self.fails = 0
+ self.invalid = False
+
+ def msgFailed(self):
+ self.fails = self.fails + 1
+ return self.fails
+
+ def senderDict(self):
+ return self._senderDict
+
+ def __hash__(self):
+ return self.id.__hash__()
+
+ def __repr__(self):
+ return ">node <%s> %s<" % (self.id.encode('base64')[:4], (self.host, self.port))
+
+ ## these comparators let us bisect/index a list full of nodes with either a node or an int/long
+ def __lt__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num < a
+ def __le__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num <= a
+ def __gt__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num > a
+ def __ge__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num >= a
+ def __eq__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num == a
+ def __ne__(self, a):
+ if type(a) == InstanceType:
+ a = a.num
+ return self.num != a
+
+
+import unittest
+
+class TestNode(unittest.TestCase):
+ def setUp(self):
+ self.node = Node().init(khash.newID(), 'localhost', 2002)
+ def testUpdateLastSeen(self):
+ t = self.node.lastSeen
+ self.node.updateLastSeen()
+ assert t < self.node.lastSeen
+
diff --git a/khashmir/setup.py b/khashmir/setup.py
new file mode 100644
index 0000000..a9e680a
--- /dev/null
+++ b/khashmir/setup.py
@@ -0,0 +1,70 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+#!/usr/bin/env python
+
+import os
+import sys
+
+try:
+ import distutils.core
+ import distutils.command.build_ext
+except ImportError:
+ raise SystemExit, """\
+You don't have the python development modules installed.
+
+If you have Debian you can install it by running
+ apt-get install python-dev
+
+If you have RedHat and know how to install this from an RPM please
+email us so we can put instructions here.
+"""
+
+try:
+ import twisted
+except ImportError:
+ raise SystemExit, """\
+You don't have Twisted installed.
+
+Twisted can be downloaded from
+ http://twistedmatrix.com/products/download
+
+Anything later that version 1.0.3 should work
+"""
+
+try:
+ import sqlite
+except ImportError:
+ raise SystemExit, """\
+You don't have PySQLite installed.
+
+PySQLite can be downloaded from
+ http://sourceforge.net/project/showfiles.php?group_id=54058&release_id=139482
+"""
+
+setup_args = {
+ 'name': 'khashmir',
+ 'author': 'Andrew Loewenstern',
+ 'author_email': 'burris@users.sourceforge.net',
+ 'licence': 'MIT',
+ 'package_dir': {'khashmir': '.'},
+ 'packages': [
+ 'khashmir',
+ ],
+}
+
+if hasattr(distutils.dist.DistributionMetadata, 'get_keywords'):
+ setup_args['keywords'] = "internet tcp p2p"
+
+if hasattr(distutils.dist.DistributionMetadata, 'get_platforms'):
+ setup_args['platforms'] = "win32 posix"
+
+if __name__ == '__main__':
+ apply(distutils.core.setup, (), setup_args)
diff --git a/khashmir/test.py b/khashmir/test.py
new file mode 100644
index 0000000..a6c8a9c
--- /dev/null
+++ b/khashmir/test.py
@@ -0,0 +1,21 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+import unittest
+
+import ktable, khashmir
+import khash, node, knode
+import actions
+import test_krpc
+import test_khashmir
+import kstore
+
+tests = unittest.defaultTestLoader.loadTestsFromNames(['kstore', 'khash', 'node', 'knode', 'actions', 'ktable', 'test_krpc', 'test_khashmir'])
+result = unittest.TextTestRunner().run(tests)
diff --git a/khashmir/test_khashmir.py b/khashmir/test_khashmir.py
new file mode 100644
index 0000000..e22028e
--- /dev/null
+++ b/khashmir/test_khashmir.py
@@ -0,0 +1,166 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from unittest import *
+
+from BitTorrent import RawServer_magic
+
+from khashmir import *
+import khash
+from copy import copy
+
+from random import randrange
+from krpc import KRPC
+
+KRPC.noisy=0
+import os
+
+if __name__ =="__main__":
+ tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
+ result = TextTestRunner().run(tests)
+
+class MultiTest(TestCase):
+ num = 25
+ def _done(self, val):
+ self.done = 1
+
+ def setUp(self):
+ self.l = []
+ self.startport = 10088
+ d = dict([(x[0],x[1]) for x in common_options + rare_options])
+ self.r = RawServer(Event(), d)
+ for i in range(self.num):
+ self.l.append(Khashmir('127.0.0.1', self.startport + i, '/tmp/%s.test' % (self.startport + i), self.r))
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+
+ for i in self.l:
+ try:
+ i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
+ except:
+ pass
+ try:
+ i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
+ except:
+ pass
+ try:
+ i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
+ except:
+ pass
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ self.r.listen_once(1)
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ self.r.listen_once(1)
+
+ def tearDown(self):
+ for i in self.l:
+ self.r.stop_listening_udp(i.socket)
+ i.socket.close()
+
+ self.r.listen_once(1)
+
+ def testStoreRetrieve(self):
+ for i in range(10):
+ K = khash.newID()
+ V = khash.newID()
+
+ for a in range(3):
+ self.done = 0
+ def _scb(val):
+ self.done = 1
+ self.l[randrange(0, self.num)].storeValueForKey(K, V, _scb)
+ while not self.done:
+ self.r.listen_once(1)
+
+
+ def _rcb(val):
+ if not val:
+ self.done = 1
+ self.assertEqual(self.got, 1)
+ elif V in val:
+ self.got = 1
+ for x in range(3):
+ self.got = 0
+ self.done = 0
+ self.l[randrange(0, self.num)].valueForKey(K, _rcb)
+ while not self.done:
+ self.r.listen_once(1)
+
+class AASimpleTests(TestCase):
+ def setUp(self):
+ d = dict([(x[0],x[1]) for x in common_options + rare_options])
+ self.r = RawServer(Event(), d)
+ self.a = Khashmir('127.0.0.1', 4044, '/tmp/a.test', self.r)
+ self.b = Khashmir('127.0.0.1', 4045, '/tmp/b.test', self.r)
+
+ def tearDown(self):
+ self.r.stop_listening_udp(self.a.socket)
+ self.r.stop_listening_udp(self.b.socket)
+ self.a.socket.close()
+ self.b.socket.close()
+
+ def addContacts(self):
+ self.a.addContact('127.0.0.1', 4045)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+
+ def testStoreRetrieve(self):
+ self.addContacts()
+ self.got = 0
+ self.a.storeValueForKey(sha('foo').digest(), 'foobar')
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.a.valueForKey(sha('foo').digest(), self._cb)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+
+ def _cb(self, val):
+ if not val:
+ self.assertEqual(self.got, 1)
+ elif 'foobar' in val:
+ self.got = 1
+
+ def testAddContact(self):
+ self.assertEqual(len(self.a.table.buckets), 1)
+ self.assertEqual(len(self.a.table.buckets[0].l), 0)
+
+ self.assertEqual(len(self.b.table.buckets), 1)
+ self.assertEqual(len(self.b.table.buckets[0].l), 0)
+
+ self.addContacts()
+
+ self.assertEqual(len(self.a.table.buckets), 1)
+ self.assertEqual(len(self.a.table.buckets[0].l), 1)
+ self.assertEqual(len(self.b.table.buckets), 1)
+ self.assertEqual(len(self.b.table.buckets[0].l), 1)
+
+
+
+
+
+
+
+
diff --git a/khashmir/test_krpc.py b/khashmir/test_krpc.py
new file mode 100644
index 0000000..2ba4343
--- /dev/null
+++ b/khashmir/test_krpc.py
@@ -0,0 +1,161 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from unittest import *
+from krpc import *
+from BitTorrent.defaultargs import common_options, rare_options
+from threading import Event
+from node import Node
+
+KRPC.noisy = 0
+
+import sys
+
+if __name__ =="__main__":
+ tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
+ result = TextTestRunner().run(tests)
+
+
+def connectionForAddr(host, port):
+ return host
+
+
+class Receiver(object):
+ protocol = KRPC
+ def __init__(self, addr):
+ self.buf = []
+ self.node = Node().init('0'*20, addr[0], addr[1])
+ def krpc_store(self, msg, _krpc_sender):
+ self.buf += [msg]
+ def krpc_echo(self, msg, _krpc_sender):
+ return msg
+
+class KRPCTests(TestCase):
+ def setUp(self):
+ self.noisy = 0
+ d = dict([(x[0],x[1]) for x in common_options + rare_options])
+ self.r = RawServer(Event(), d)
+
+ addr = ('127.0.0.1', 1180)
+ self.as = self.r.create_udpsocket(addr[1], addr[0], True)
+ self.af = Receiver(addr)
+ self.a = hostbroker(self.af, addr, self.as, self.r.add_task)
+ self.r.start_listening_udp(self.as, self.a)
+
+ addr = ('127.0.0.1', 1181)
+ self.bs = self.r.create_udpsocket(addr[1], addr[0], True)
+ self.bf = Receiver(addr)
+ self.b = hostbroker(self.bf, addr, self.bs, self.r.add_task)
+ self.r.start_listening_udp(self.bs, self.b)
+
+ def tearDown(self):
+ self.as.close()
+ self.bs.close()
+
+ def testSimpleMessage(self):
+ self.noisy = 0
+ self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
+ self.r.listen_once(0.01)
+ self.assertEqual(self.bf.buf, ["This is a test."])
+
+ def testMessageBlast(self):
+ self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
+ self.r.listen_once(0.01)
+ self.assertEqual(self.bf.buf, ["This is a test."])
+ self.bf.buf = []
+
+ for i in range(100):
+ self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('store', {'msg' : "This is a test."})
+ self.r.listen_once(0.01)
+ #self.bf.buf = []
+ self.assertEqual(self.bf.buf, ["This is a test."] * 100)
+
+ def testEcho(self):
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is a test.")
+
+ def gotMsg(self, dict):
+ _krpc_sender = dict['_krpc_sender']
+ msg = dict['rsp']
+ self.msg = msg
+
+ def testManyEcho(self):
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is a test.")
+ for i in xrange(100):
+ self.msg = None
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is a test.")
+
+ def testMultiEcho(self):
+ self.noisy = 0
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is a test.")
+
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is another test.")
+
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is yet another test.")
+
+ def testEchoReset(self):
+ self.noisy = 0
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is a test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is a test.")
+
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is another test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is another test.")
+
+ del(self.a.connections[('127.0.0.1', 1181)])
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('echo', {'msg' : "This is yet another test."})
+ df.addCallback(self.gotMsg)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.msg, "This is yet another test.")
+
+ def testLotsofEchoReset(self):
+ for i in range(100):
+ self.testEchoReset()
+
+ def testUnknownMeth(self):
+ self.noisy = 0
+ df = self.a.connectionForAddr(('127.0.0.1', 1181)).sendRequest('blahblah', {'msg' : "This is a test."})
+ df.addErrback(self.gotErr)
+ self.r.listen_once(0.01)
+ self.r.listen_once(0.01)
+ self.assertEqual(self.err, KRPC_ERROR_METHOD_UNKNOWN)
+
+ def gotErr(self, err):
+ self.err = err
+
diff --git a/khashmir/test_kstore.py b/khashmir/test_kstore.py
new file mode 100644
index 0000000..d2f2b15
--- /dev/null
+++ b/khashmir/test_kstore.py
@@ -0,0 +1,91 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+import unittest
+from BitTorrent.platform import bttime
+from time import sleep
+
+from kstore import KStore
+if __name__ =="__main__":
+ tests = unittest.defaultTestLoader.loadTestsFromNames(['test_kstore'])
+ result = unittest.TextTestRunner().run(tests)
+
+
+class BasicTests(unittest.TestCase):
+ def setUp(self):
+ self.k = KStore()
+
+ def testNoKeys(self):
+ self.assertEqual(self.k.keys(), [])
+
+ def testKey(self):
+ self.k['foo'] = 'bar'
+ self.assertEqual(self.k.keys(), ['foo'])
+
+ def testKeys(self):
+ self.k['foo'] = 'bar'
+ self.k['wing'] = 'wang'
+ l = self.k.keys()
+ l.sort()
+ self.assertEqual(l, ['foo', 'wing'])
+
+ def testInsert(self):
+ self.k['foo'] = 'bar'
+ self.assertEqual(self.k['foo'], ['bar'])
+
+ def testInsertTwo(self):
+ self.k['foo'] = 'bar'
+ self.k['foo'] = 'bing'
+ l = self.k['foo']
+ l.sort()
+ self.assertEqual(l, ['bar', 'bing'])
+
+ def testExpire(self):
+ self.k['foo'] = 'bar'
+ self.k.expire(bttime() - 1)
+ l = self.k['foo']
+ l.sort()
+ self.assertEqual(l, ['bar'])
+ self.k['foo'] = 'bing'
+ t = bttime()
+ self.k.expire(bttime() - 1)
+ l = self.k['foo']
+ l.sort()
+ self.assertEqual(l, ['bar', 'bing'])
+ self.k['foo'] = 'ding'
+ self.k['foo'] = 'dang'
+ l = self.k['foo']
+ l.sort()
+ self.assertEqual(l, ['bar', 'bing', 'dang', 'ding'])
+ self.k.expire(t)
+ l = self.k['foo']
+ l.sort()
+ self.assertEqual(l, ['dang', 'ding'])
+
+ def testDup(self):
+ self.k['foo'] = 'bar'
+ self.k['foo'] = 'bar'
+ self.assertEqual(self.k['foo'], ['bar'])
+
+ def testSample(self):
+ for i in xrange(2):
+ self.k['foo'] = i
+ l = self.k.sample('foo', 5)
+ l.sort()
+ self.assertEqual(l, [0, 1])
+
+ for i in xrange(10):
+ for i in xrange(10):
+ self.k['bar'] = i
+ l = self.k.sample('bar', 5)
+ self.assertEqual(len(l), 5)
+ for i in xrange(len(l)):
+ self.assert_(l[i] not in l[i+1:])
+
diff --git a/khashmir/unet.py b/khashmir/unet.py
new file mode 100644
index 0000000..e163a3f
--- /dev/null
+++ b/khashmir/unet.py
@@ -0,0 +1,84 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+#
+# knet.py
+# create a network of khashmir nodes
+# usage: knet.py <num_nodes> <start_port> <ip_address>
+
+from utkhashmir import UTKhashmir
+from BitTorrent.RawServer_magic import RawServer
+from BitTorrent.defaultargs import common_options, rare_options
+from random import randrange
+from threading import Event
+import sys, os
+
+from krpc import KRPC
+KRPC.noisy = 1
+
+class Network:
+ def __init__(self, size=0, startport=5555, localip='127.0.0.1'):
+ self.num = size
+ self.startport = startport
+ self.localip = localip
+
+ def _done(self, val):
+ self.done = 1
+
+ def simpleSetUp(self):
+ #self.kfiles()
+ d = dict([(x[0],x[1]) for x in common_options + rare_options])
+ self.r = RawServer(Event(), d)
+ self.l = []
+ for i in range(self.num):
+ self.l.append(UTKhashmir('', self.startport + i, 'kh%s.db' % (self.startport + i), self.r))
+
+ for i in self.l:
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ i.addContact(self.localip, self.l[randrange(0,self.num)].port)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+ self.r.listen_once(1)
+
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ self.r.listen_once(1)
+ for i in self.l:
+ self.done = 0
+ i.findCloseNodes(self._done)
+ while not self.done:
+ self.r.listen_once(1)
+
+ def tearDown(self):
+ for i in self.l:
+ i.rawserver.stop_listening_udp(i.socket)
+ i.socket.close()
+ #self.kfiles()
+
+ def kfiles(self):
+ for i in range(self.startport, self.startport+self.num):
+ try:
+ os.unlink('kh%s.db' % i)
+ except:
+ pass
+
+ self.r.listen_once(1)
+
+if __name__ == "__main__":
+ n = Network(int(sys.argv[1]), int(sys.argv[2]))
+ n.simpleSetUp()
+ print ">>> network ready"
+ try:
+ n.r.listen_forever()
+ finally:
+ n.tearDown()
diff --git a/khashmir/util.py b/khashmir/util.py
new file mode 100644
index 0000000..3bc456e
--- /dev/null
+++ b/khashmir/util.py
@@ -0,0 +1,69 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+from struct import pack, unpack
+
+def bucket_stats(l):
+ """given a list of khashmir instances, finds min, max, and average number of nodes in tables"""
+ max = avg = 0
+ min = None
+ def count(buckets):
+ c = 0
+ for bucket in buckets:
+ c = c + len(bucket.l)
+ return c
+ for node in l:
+ c = count(node.table.buckets)
+ if min == None:
+ min = c
+ elif c < min:
+ min = c
+ if c > max:
+ max = c
+ avg = avg + c
+ avg = avg / len(l)
+ return {'min':min, 'max':max, 'avg':avg}
+
+def compact_peer_info(ip, port):
+ return pack('!BBBBH', *([int(i) for i in ip.split('.')] + [port]))
+
+def packPeers(peers):
+ return map(lambda a: compact_peer_info(a[0], a[1]), peers)
+
+def reducePeers(peers):
+ return reduce(lambda a, b: a + b, peers, '')
+
+def unpackPeers(p):
+ peers = []
+ if type(p) == type(''):
+ for x in xrange(0, len(p), 6):
+ ip = '.'.join([str(ord(i)) for i in p[x:x+4]])
+ port = unpack('!H', p[x+4:x+6])[0]
+ peers.append((ip, port, None))
+ else:
+ for x in p:
+ peers.append((x['ip'], x['port'], x.get('peer id')))
+ return peers
+
+
+def compact_node_info(id, ip, port):
+ return id + compact_peer_info(ip, port)
+
+def packNodes(nodes):
+ return ''.join([compact_node_info(x['id'], x['host'], x['port']) for x in nodes])
+
+def unpackNodes(n):
+ nodes = []
+ for x in xrange(0, len(n), 26):
+ id = n[x:x+20]
+ ip = '.'.join([str(ord(i)) for i in n[x+20:x+24]])
+ port = unpack('!H', n[x+24:x+26])[0]
+ nodes.append({'id':id, 'host':ip, 'port': port})
+ return nodes
diff --git a/khashmir/utkhashmir.py b/khashmir/utkhashmir.py
new file mode 100644
index 0000000..66c7441
--- /dev/null
+++ b/khashmir/utkhashmir.py
@@ -0,0 +1,224 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+import khashmir, knode
+from actions import *
+from khash import newID
+from krpc import KRPCProtocolError, KRPCFailSilently
+from cache import Cache
+from sha import sha
+from util import *
+from threading import Thread
+from socket import gethostbyname
+from const import *
+from kstore import sample
+
+TOKEN_UPDATE_INTERVAL = 5 * 60 # five minutes
+NUM_PEERS = 50 # number of peers to return
+
+class UTNode(knode.KNodeBase):
+ def announcePeer(self, info_hash, port, khashmir_id):
+ assert type(port) == type(1)
+ assert type(info_hash) == type('')
+ assert type(khashmir_id) == type('')
+ assert len(info_hash) == 20
+ assert len(khashmir_id) == 20
+
+ try:
+ token = self.table.tcache[self.id]
+ except:
+ token = None
+ if token:
+ assert type(token) == type("")
+ assert len(token) == 20
+ df = self.conn().sendRequest('announce_peer', {'info_hash':info_hash,
+ 'port':port,
+ 'id':khashmir_id,
+ 'token':token})
+ else:
+ raise KRPCProtocolError("no write token for node")
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
+
+ def getPeers(self, info_hash, khashmir_id):
+ df = self.conn().sendRequest('get_peers', {'info_hash':info_hash, 'id':khashmir_id})
+ df.addErrback(self.errBack)
+ df.addCallback(self.checkSender)
+ return df
+
+ def checkSender(self, dict):
+ d = knode.KNodeBase.checkSender(self, dict)
+ try:
+ self.table.tcache[d['rsp']['id']] = d['rsp']['token']
+ except KeyError:
+ pass
+ return d
+
+class UTStoreValue(StoreValue):
+ def callNode(self, node, f):
+ return f(self.target, self.value, node.token, self.table.node.id)
+
+class UTKhashmir(khashmir.KhashmirBase):
+ _Node = UTNode
+
+ def setup(self, host, port, data_dir, rlcount, checkpoint=True):
+ khashmir.KhashmirBase.setup(self, host, port,data_dir, rlcount, checkpoint)
+ self.cur_token = self.last_token = sha('')
+ self.tcache = Cache()
+ self.gen_token(loop=True)
+ self.expire_cached_tokens(loop=True)
+
+ def expire_cached_tokens(self, loop=False):
+ self.tcache.expire(time() - TOKEN_UPDATE_INTERVAL)
+ if loop:
+ self.rawserver.external_add_task(self.expire_cached_tokens, TOKEN_UPDATE_INTERVAL, (True,))
+
+ def gen_token(self, loop=False):
+ self.last_token = self.cur_token
+ self.cur_token = sha(newID())
+ if loop:
+ self.rawserver.external_add_task(self.gen_token, TOKEN_UPDATE_INTERVAL, (True,))
+
+ def get_token(self, host, port):
+ x = self.cur_token.copy()
+ x.update("%s%s" % (host, port))
+ h = x.digest()
+ return h
+
+
+ def val_token(self, token, host, port):
+ x = self.cur_token.copy()
+ x.update("%s%s" % (host, port))
+ a = x.digest()
+ if token == a:
+ return True
+
+ x = self.last_token.copy()
+ x.update("%s%s" % (host, port))
+ b = x.digest()
+ if token == b:
+ return True
+
+ return False
+
+ def addContact(self, host, port, callback=None):
+ # use dns on host, then call khashmir.addContact
+ Thread(target=self._get_host, args=[host, port, callback]).start()
+
+ def _get_host(self, host, port, callback):
+
+ # this exception catch can go away once we actually fix the bug
+ try:
+ ip = gethostbyname(host)
+ except TypeError, e:
+ raise TypeError(str(e) + (": host(%s) port(%s)" % (repr(host), repr(port))))
+
+ self.rawserver.external_add_task(self._got_host, 0, (ip, port, callback))
+
+ def _got_host(self, host, port, callback):
+ khashmir.KhashmirBase.addContact(self, host, port, callback)
+
+ def announcePeer(self, info_hash, port, callback=None):
+ """ stores the value for key in the global table, returns immediately, no status
+ in this implementation, peers respond but don't indicate status to storing values
+ a key can have many values
+ """
+ def _storeValueForKey(nodes, key=info_hash, value=port, response=callback , table=self.table):
+ if not response:
+ # default callback
+ def _storedValueHandler(sender):
+ pass
+ response=_storedValueHandler
+ action = UTStoreValue(self, key, value, response, self.rawserver.add_task, "announcePeer")
+ self.rawserver.external_add_task(action.goWithNodes, 0, (nodes,))
+
+ # this call is asynch
+ self.findNode(info_hash, _storeValueForKey)
+
+ def krpc_announce_peer(self, info_hash, port, id, token, _krpc_sender):
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ if not self.val_token(token, sender['host'], sender['port']):
+ raise KRPCProtocolError("Invalid Write Token")
+ value = compact_peer_info(_krpc_sender[0], port)
+ self.store[info_hash] = value
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+ return {"id" : self.node.id}
+
+ def retrieveValues(self, key):
+ try:
+ l = self.store.sample(key, NUM_PEERS)
+ except KeyError:
+ l = []
+ return l
+
+ def getPeers(self, info_hash, callback, searchlocal = 1):
+ """ returns the values found for key in global table
+ callback will be called with a list of values for each peer that returns unique values
+ final callback will be an empty list - probably should change to 'more coming' arg
+ """
+ nodes = self.table.findNodes(info_hash, invalid=True)
+ l = [x for x in nodes if x.invalid]
+ if len(l) > 4:
+ nodes = sample(l , 4) + self.table.findNodes(info_hash, invalid=False)[:4]
+
+ # get locals
+ if searchlocal:
+ l = self.retrieveValues(info_hash)
+ if len(l) > 0:
+ self.rawserver.external_add_task(callback, 0, ([reducePeers(l)],))
+ else:
+ l = []
+ # create our search state
+ state = GetValue(self, info_hash, callback, self.rawserver.add_task, 'getPeers')
+ self.rawserver.external_add_task(state.goWithNodes, 0, (nodes, l))
+
+ def getPeersAndAnnounce(self, info_hash, port, callback, searchlocal = 1):
+ """ returns the values found for key in global table
+ callback will be called with a list of values for each peer that returns unique values
+ final callback will be an empty list - probably should change to 'more coming' arg
+ """
+ nodes = self.table.findNodes(info_hash, invalid=False)
+ nodes += self.table.findNodes(info_hash, invalid=True)
+
+ # get locals
+ if searchlocal:
+ l = self.retrieveValues(info_hash)
+ if len(l) > 0:
+ self.rawserver.external_add_task(callback, 0, ([reducePeers(l)],))
+ else:
+ l = []
+ # create our search state
+ x = lambda a: a
+ state = GetAndStore(self, info_hash, port, callback, x, self.rawserver.add_task, 'getPeers', "announcePeer")
+ self.rawserver.external_add_task(state.goWithNodes, 0, (nodes, l))
+
+ def krpc_get_peers(self, info_hash, id, _krpc_sender):
+ sender = {'id' : id}
+ sender['host'] = _krpc_sender[0]
+ sender['port'] = _krpc_sender[1]
+ n = self.Node().initWithDict(sender)
+ self.insertNode(n, contacted=0)
+
+ l = self.retrieveValues(info_hash)
+ if len(l) > 0:
+ return {'values' : [reducePeers(l)],
+ "id": self.node.id,
+ "token" : self.get_token(sender['host'], sender['port'])}
+ else:
+ nodes = self.table.findNodes(info_hash, invalid=False)
+ nodes = [node.senderDict() for node in nodes]
+ return {'nodes' : packNodes(nodes),
+ "id": self.node.id,
+ "token" : self.get_token(sender['host'], sender['port'])}
+
diff --git a/language_codes.py b/language_codes.py
new file mode 100644
index 0000000..3464f30
--- /dev/null
+++ b/language_codes.py
@@ -0,0 +1,11 @@
+import sys
+from BitTorrent import language_names
+
+if '-a' in sys.argv:
+ from BitTorrent.language import unfinished_language_names
+ language_names.update(unfinished_language_names)
+
+languages = language_names.keys()
+languages.sort()
+
+print ' '.join(languages)
diff --git a/launchmany-console b/launchmany-console
new file mode 120000
index 0000000..3ee3ad1
--- /dev/null
+++ b/launchmany-console
@@ -0,0 +1 @@
+launchmany-console.py \ No newline at end of file
diff --git a/launchmany-console.py b/launchmany-console.py
new file mode 100755
index 0000000..f327178
--- /dev/null
+++ b/launchmany-console.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by John Hoffman
+
+if __name__ == '__main__':
+ from BitTorrent.platform import install_translation
+ install_translation()
+
+import sys
+import os
+
+from BitTorrent.launchmanycore import LaunchMany
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.parseargs import parseargs, printHelp
+from BitTorrent import configfile
+from BitTorrent import version
+from BitTorrent import BTFailure
+
+exceptions = []
+
+class HeadlessDisplayer:
+ def display(self, data):
+ print ''
+ if not data:
+ self.message(_("no torrents"))
+ for x in data:
+ ( name, status, progress, peers, seeds, seedsmsg, dist,
+ uprate, dnrate, upamt, dnamt, size, t, msg ) = x
+ print '"%s": "%s" (%s) - %sP%s%s%.3fD u%0.1fK/s-d%0.1fK/s u%dK-d%dK "%s"' % (
+ name, status, progress, peers, seeds, seedsmsg, dist,
+ uprate/1000, dnrate/1000, upamt/1024, dnamt/1024, msg)
+ return False
+
+ def message(self, s):
+ print "### "+s
+
+ def exception(self, s):
+ exceptions.append(s)
+ self.message(_("SYSTEM ERROR - EXCEPTION GENERATED"))
+
+
+if __name__ == '__main__':
+ uiname = 'launchmany-console'
+ defaults = get_defaults(uiname)
+ try:
+ if len(sys.argv) < 2:
+ printHelp(uiname, defaults)
+ sys.exit(1)
+ config, args = configfile.parse_configuration_and_args(defaults,
+ uiname, sys.argv[1:], 0, 1)
+ if args:
+ config['torrent_dir'] = args[0]
+ if not os.path.isdir(config['torrent_dir']):
+ raise BTFailure(_("Warning: ")+args[0]+_(" is not a directory"))
+ except BTFailure, e:
+ print _("error: %s\nrun with no args for parameter explanations") % str(e)
+ sys.exit(1)
+
+ LaunchMany(config, HeadlessDisplayer(), 'launchmany-console')
+ if exceptions:
+ print _("\nEXCEPTION:")
+ print exceptions[0]
diff --git a/launchmany-curses b/launchmany-curses
new file mode 120000
index 0000000..f58dba2
--- /dev/null
+++ b/launchmany-curses
@@ -0,0 +1 @@
+launchmany-curses.py \ No newline at end of file
diff --git a/launchmany-curses.py b/launchmany-curses.py
new file mode 100755
index 0000000..86f8329
--- /dev/null
+++ b/launchmany-curses.py
@@ -0,0 +1,302 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by John Hoffman
+
+from __future__ import division
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+DOWNLOAD_SCROLL_RATE = 1
+
+import sys, os
+from threading import Event
+from time import time, localtime, strftime
+
+from BitTorrent.obsoletepythonsupport import *
+from BitTorrent.launchmanycore import LaunchMany
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.parseargs import parseargs, printHelp
+from BitTorrent import configfile
+from BitTorrent import version
+from BitTorrent import BTFailure
+
+try:
+ curses = import_curses()
+ import curses.panel
+ from curses.wrapper import wrapper as curses_wrapper
+ from signal import signal, SIGWINCH
+except:
+ print _("Textmode GUI initialization failed, cannot proceed.")
+ print
+ print _("This download interface requires the standard Python module "
+ "\"curses\", which is unfortunately not available for the native "
+ "Windows port of Python. It is however available for the Cygwin "
+ "port of Python, running on all Win32 systems (www.cygwin.com).")
+ print
+ print _("You may still use \"btdownloadheadless.py\" to download.")
+ sys.exit(1)
+
+exceptions = []
+
+def fmttime(n):
+ if n <= 0:
+ return None
+ n = int(n)
+ m, s = divmod(n, 60)
+ h, m = divmod(m, 60)
+ if h > 1000000:
+ return _("connecting to peers")
+ return _("ETA in %d:%02d:%02d") % (h, m, s)
+
+def fmtsize(n):
+ n = long(n)
+ unit = [' B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
+ i = 0
+ if (n > 999):
+ i = 1
+ while i + 1 < len(unit) and (n >> 10) >= 999:
+ i += 1
+ n >>= 10
+ n /= 1024
+ if i > 0:
+ size = '%.1f' % n + '%s' % unit[i]
+ else:
+ size = '%.0f' % n + '%s' % unit[i]
+ return size
+
+def ljust(s, size):
+ s = s[:size]
+ return s + (' '*(size-len(s)))
+
+def rjust(s, size):
+ s = s[:size]
+ return (' '*(size-len(s)))+s
+
+
+class CursesDisplayer(object):
+
+ def __init__(self, scrwin):
+ self.messages = []
+ self.scroll_pos = 0
+ self.scroll_time = 0
+
+ self.scrwin = scrwin
+ signal(SIGWINCH, self.winch_handler)
+ self.changeflag = Event()
+ self._remake_window()
+ curses.use_default_colors()
+
+ def winch_handler(self, signum, stackframe):
+ self.changeflag.set()
+ curses.endwin()
+ self.scrwin.refresh()
+ self.scrwin = curses.newwin(0, 0, 0, 0)
+ self._remake_window()
+ self._display_messages()
+
+ def _remake_window(self):
+ self.scrh, self.scrw = self.scrwin.getmaxyx()
+ self.scrpan = curses.panel.new_panel(self.scrwin)
+ self.mainwinh = (2*self.scrh)//3
+ self.mainwinw = self.scrw - 4 # - 2 (bars) - 2 (spaces)
+ self.mainwiny = 2 # + 1 (bar) + 1 (titles)
+ self.mainwinx = 2 # + 1 (bar) + 1 (space)
+ # + 1 to all windows so we can write at mainwinw
+
+ self.mainwin = curses.newwin(self.mainwinh, self.mainwinw+1,
+ self.mainwiny, self.mainwinx)
+ self.mainpan = curses.panel.new_panel(self.mainwin)
+ self.mainwin.scrollok(0)
+ self.mainwin.nodelay(1)
+
+ self.headerwin = curses.newwin(1, self.mainwinw+1,
+ 1, self.mainwinx)
+ self.headerpan = curses.panel.new_panel(self.headerwin)
+ self.headerwin.scrollok(0)
+
+ self.totalwin = curses.newwin(1, self.mainwinw+1,
+ self.mainwinh+1, self.mainwinx)
+ self.totalpan = curses.panel.new_panel(self.totalwin)
+ self.totalwin.scrollok(0)
+
+ self.statuswinh = self.scrh-4-self.mainwinh
+ self.statuswin = curses.newwin(self.statuswinh, self.mainwinw+1,
+ self.mainwinh+3, self.mainwinx)
+ self.statuspan = curses.panel.new_panel(self.statuswin)
+ self.statuswin.scrollok(0)
+
+ try:
+ self.scrwin.border(ord('|'),ord('|'),ord('-'),ord('-'),ord(' '),ord(' '),ord(' '),ord(' '))
+ except:
+ pass
+ rcols = (_("Size"),_("Download"),_("Upload"))
+ rwids = (8, 10, 10)
+ rwid = sum(rwids)
+ start = self.mainwinw - rwid
+ self.headerwin.addnstr(0, 2, '#', start, curses.A_BOLD)
+ self.headerwin.addnstr(0, 4, _("Filename"), start, curses.A_BOLD)
+
+ for s,w in zip(rcols, rwids):
+ st = start + max(w - len(s), 0)
+ self.headerwin.addnstr(0, st, s[:w], len(s[:w]), curses.A_BOLD)
+ start += w
+
+ self.totalwin.addnstr(0, self.mainwinw - 27, _("Totals:"), 7, curses.A_BOLD)
+
+ self._display_messages()
+
+ curses.panel.update_panels()
+ curses.doupdate()
+ self.changeflag.clear()
+
+
+ def _display_line(self, s, bold = False):
+ if self.disp_end:
+ return True
+ line = self.disp_line
+ self.disp_line += 1
+ if line < 0:
+ return False
+ if bold:
+ self.mainwin.addnstr(line, 0, s, self.mainwinw, curses.A_BOLD)
+ else:
+ self.mainwin.addnstr(line, 0, s, self.mainwinw)
+ if self.disp_line >= self.mainwinh:
+ self.disp_end = True
+ return self.disp_end
+
+ def _display_data(self, data):
+ if 3*len(data) <= self.mainwinh:
+ self.scroll_pos = 0
+ self.scrolling = False
+ elif self.scroll_time + DOWNLOAD_SCROLL_RATE < time():
+ self.scroll_time = time()
+ self.scroll_pos += 1
+ self.scrolling = True
+ if self.scroll_pos >= 3*len(data)+2:
+ self.scroll_pos = 0
+
+ i = self.scroll_pos//3
+ self.disp_line = (3*i)-self.scroll_pos
+ self.disp_end = False
+
+ while not self.disp_end:
+ ii = i % len(data)
+ if i and not ii:
+ if not self.scrolling:
+ break
+ self._display_line('')
+ if self._display_line(''):
+ break
+ ( name, status, progress, peers, seeds, seedsmsg, dist,
+ uprate, dnrate, upamt, dnamt, size, t, msg ) = data[ii]
+ t = fmttime(t)
+ if t:
+ status = t
+ name = ljust(name,self.mainwinw-32)
+ size = rjust(fmtsize(size),8)
+ uprate = rjust('%s/s' % fmtsize(uprate),10)
+ dnrate = rjust('%s/s' % fmtsize(dnrate),10)
+ line = "%3d %s%s%s%s" % (ii+1, name, size, dnrate, uprate)
+ self._display_line(line, True)
+ if peers + seeds:
+ datastr = _(" (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up") % (
+ progress, status, peers, seeds, dist,
+ fmtsize(dnamt), fmtsize(upamt) )
+ else:
+ datastr = ' '+status+' ('+progress+')'
+ self._display_line(datastr)
+ self._display_line(' '+ljust(msg,self.mainwinw-4))
+ i += 1
+
+ def display(self, data):
+ if self.changeflag.isSet():
+ return
+
+ inchar = self.mainwin.getch()
+ if inchar == 12: # ^L
+ self._remake_window()
+
+ self.mainwin.erase()
+ if data:
+ self._display_data(data)
+ else:
+ self.mainwin.addnstr( 1, self.mainwinw//2-5,
+ _("no torrents"), 12, curses.A_BOLD )
+ totalup = 0
+ totaldn = 0
+ for ( name, status, progress, peers, seeds, seedsmsg, dist,
+ uprate, dnrate, upamt, dnamt, size, t, msg ) in data:
+ totalup += uprate
+ totaldn += dnrate
+
+ totalup = '%s/s' % fmtsize(totalup)
+ totaldn = '%s/s' % fmtsize(totaldn)
+
+ self.totalwin.erase()
+ self.totalwin.addnstr(0, self.mainwinw-27, _("Totals:"), 7, curses.A_BOLD)
+ self.totalwin.addnstr(0, self.mainwinw-20 + (10-len(totaldn)),
+ totaldn, 10, curses.A_BOLD)
+ self.totalwin.addnstr(0, self.mainwinw-10 + (10-len(totalup)),
+ totalup, 10, curses.A_BOLD)
+
+ curses.panel.update_panels()
+ curses.doupdate()
+
+ return inchar in (ord('q'),ord('Q'))
+
+ def message(self, s):
+ self.messages.append(strftime('%x %X - ',localtime(time()))+s)
+ self._display_messages()
+
+ def _display_messages(self):
+ self.statuswin.erase()
+ winpos = 0
+ for s in self.messages[-self.statuswinh:]:
+ self.statuswin.addnstr(winpos, 0, s, self.mainwinw)
+ winpos += 1
+ curses.panel.update_panels()
+ curses.doupdate()
+
+ def exception(self, s):
+ exceptions.append(s)
+ self.message(_("SYSTEM ERROR - EXCEPTION GENERATED"))
+
+
+
+def LaunchManyWrapper(scrwin, config):
+ LaunchMany(config, CursesDisplayer(scrwin), 'launchmany-curses')
+
+
+if __name__ == '__main__':
+ uiname = 'launchmany-curses'
+ defaults = get_defaults(uiname)
+ try:
+ if len(sys.argv) < 2:
+ printHelp(uiname, defaults)
+ sys.exit(1)
+ config, args = configfile.parse_configuration_and_args(defaults,
+ uiname, sys.argv[1:], 0, 1)
+ if args:
+ config['torrent_dir'] = args[0]
+ if not os.path.isdir(config['torrent_dir']):
+ raise BTFailure(_("Warning: ")+args[0]+_(" is not a directory"))
+ except BTFailure, e:
+ print _("error: ") + str(e) + _("\nrun with no args for parameter explanations")
+ sys.exit(1)
+
+ curses_wrapper(LaunchManyWrapper, config)
+ if exceptions:
+ print _("\nEXCEPTION:")
+ print exceptions[0]
diff --git a/makei18n.sh b/makei18n.sh
new file mode 100644
index 0000000..5f038ee
--- /dev/null
+++ b/makei18n.sh
@@ -0,0 +1,50 @@
+APP_NAME="bittorrent"
+LANGUAGES=`python language_codes.py -a`
+MESSAGES_PO="messages.pot"
+
+rm -f $APP_NAME.lis
+rm -f *~
+
+# create .pot file with most important strings first so that people
+# who start but don't finish translations end up translating the most
+# important parts
+ls bittorrent.py maketorrent.py >> $APP_NAME.lis
+ls BitTorrent/GUI.py >> $APP_NAME.lis
+ls BitTorrent/TorrentQueue.py >> $APP_NAME.lis
+ls BitTorrent/NewVersion.py >> $APP_NAME.lis
+ls BitTorrent/StatusLight.py >> $APP_NAME.lis
+ls BitTorrent/defaultargs.py >> $APP_NAME.lis
+ls *py >> $APP_NAME.lis
+# find everything else
+find . -name \*.py -type f | egrep -v '/(build)|(dist)|(test)/' >> $APP_NAME.lis
+
+xgettext -f $APP_NAME.lis -L Python -o - |\
+ sed -e 's/CHARSET/UTF-8/' |\
+ sed -e 's/SOME DESCRIPTIVE TITLE./BitTorrent/' |\
+ sed -e 's/YEAR/2006/' |\
+ sed -e "s/THE PACKAGE'S COPYRIGHT HOLDER/BitTorrent, Inc./" |\
+ sed -e 's/PACKAGE/BitTorrent/' |\
+ sed -e 's/VERSION/4.4/' |\
+ sed -e 's/FIRST AUTHOR/Matt Chisholm/' |\
+ sed -e 's/EMAIL@ADDRESS/matt (dash) translations (at) bittorrent (dot) com/' |\
+ sed -e 's/FULL NAME/Matt Chisholm/' > $MESSAGES_PO.nonunique
+
+
+msguniq $MESSAGES_PO.nonunique > $MESSAGES_PO
+rm -f $MESSAGES_PO.nonunique
+
+for lang in $LANGUAGES ; do
+ echo "making $lang"
+ mkdir -p locale/$lang/LC_MESSAGES
+ msgmerge --no-fuzzy-matching po/$lang.po $MESSAGES_PO \
+ | egrep -v '^#~' \
+ > locale/$lang/LC_MESSAGES/$APP_NAME.po
+ msgfmt -o locale/$lang/LC_MESSAGES/$APP_NAME.mo \
+ locale/$lang/LC_MESSAGES/$APP_NAME.po
+done
+
+## Don't do this always:
+#for lang in $LANGUAGES ; do
+# cp locale/${lang}/LC_MESSAGES/bittorrent.po po/$lang.po
+#done
+
diff --git a/maketorrent b/maketorrent
new file mode 120000
index 0000000..d6a8e31
--- /dev/null
+++ b/maketorrent
@@ -0,0 +1 @@
+maketorrent.py \ No newline at end of file
diff --git a/maketorrent-console b/maketorrent-console
new file mode 120000
index 0000000..09524ba
--- /dev/null
+++ b/maketorrent-console
@@ -0,0 +1 @@
+maketorrent-console.py \ No newline at end of file
diff --git a/maketorrent-console.py b/maketorrent-console.py
new file mode 100755
index 0000000..c103fe0
--- /dev/null
+++ b/maketorrent-console.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen
+
+if __name__ == '__main__':
+ from BitTorrent.platform import install_translation
+ install_translation()
+
+import sys
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent import configfile
+from BitTorrent.makemetafile import make_meta_files
+from BitTorrent.parseargs import parseargs, printHelp
+from BitTorrent import BTFailure
+
+defaults = get_defaults('maketorrent-console')
+defaults.extend([
+ ('comment', '',
+ _("optional human-readable comment to put in .torrent")),
+ ('target', '',
+ _("optional target file for the torrent")),
+ ])
+
+defconfig = dict([(name, value) for (name, value, doc) in defaults])
+del name, value, doc
+
+def dc(v):
+ print v
+
+def prog(amount):
+ print '%.1f%% complete\r' % (amount * 100),
+
+if __name__ == '__main__':
+ config, args = configfile.parse_configuration_and_args(defaults,
+ 'maketorrent-console',
+ sys.argv[1:],
+ 0, None)
+
+ if len(sys.argv) <= 1:
+ printHelp('maketorrent-console', defaults)
+ else:
+ try:
+ make_meta_files(args[0],
+ args[1:],
+ progressfunc=prog,
+ filefunc=dc,
+ piece_len_pow2=config['piece_size_pow2'],
+ comment=config['comment'],
+ target=config['target'],
+ filesystem_encoding=config['filesystem_encoding'],
+ use_tracker=config['use_tracker'],
+ data_dir=config['data_dir'])
+ except BTFailure, e:
+ print str(e)
+ sys.exit(1)
diff --git a/maketorrent.py b/maketorrent.py
new file mode 100755
index 0000000..ba5d275
--- /dev/null
+++ b/maketorrent.py
@@ -0,0 +1,577 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Matt Chisholm
+
+from __future__ import division
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+import os
+import sys
+
+assert sys.version_info >= (2, 3), _("Install Python %s or greater") % '2.3'
+
+from threading import Event
+
+import gtk
+import gobject
+
+from BitTorrent.GUI import *
+from BitTorrent import Desktop
+from BitTorrent import version
+from BitTorrent import configfile
+from BitTorrent.defaultargs import get_defaults
+from BitTorrent.makemetafile import make_meta_files
+from BitTorrent.parseargs import makeHelp
+from BitTorrent.platform import btspawn
+from BitTorrent.ConvertedMetainfo import set_filesystem_encoding
+
+defaults = get_defaults('maketorrent')
+defconfig = dict([(name, value) for (name, value, doc) in defaults])
+del name, value, doc
+ui_options = ('torrent_dir','piece_size_pow2','tracker_list','use_tracker')
+
+def sfe_ef(e,s):
+ print s
+set_filesystem_encoding(defconfig['filesystem_encoding'], sfe_ef)
+
+EXTENSION = '.torrent'
+
+MAXIMUM_NODES = 8
+
+class MainWindow(Window):
+
+ def __init__(self, config):
+ Window.__init__(self)
+ self.mainwindow = self # temp hack to make modal win32 file choosers work
+ self.tooltips = gtk.Tooltips()
+ self.connect('destroy', self.quit)
+ self.set_title(_("%s torrent file creator %s")%(app_name, version))
+ self.set_border_width(SPACING)
+
+ self.config = config
+ self.tracker_list = []
+ if self.config['tracker_list']:
+ self.tracker_list = self.config['tracker_list'].split(',')
+
+ right_column_width=276
+ self.box = gtk.VBox(spacing=SPACING)
+
+ self.box.pack_start(lalign(gtk.Label(
+ _("Make torrent file for this file/directory:"))),
+ expand=False, fill=False)
+
+ self.filebox = gtk.Entry()
+ self.filebox.set_editable(False)
+ self.change_button = gtk.Button(_("Choose..."))
+ self.change_button.connect('clicked', self.choose_files)
+
+ hb = gtk.HBox(spacing=SPACING)
+ hb.pack_start(self.filebox, expand=True, fill=True)
+ hb.pack_end(self.change_button, expand=False, fill=False)
+
+ self.box.pack_start(hb, expand=False, fill=False, padding=0)
+
+ self.box.pack_start(lalign(gtk.Label(
+ _("(Directories will become batch torrents)"))),
+ expand=False, fill=False, padding=0)
+
+ self.box.pack_start(gtk.HSeparator(), expand=False, fill=False, padding=0)
+
+ self.table = gtk.Table(rows=3,columns=2,homogeneous=False)
+ self.table.set_col_spacings(SPACING)
+ self.table.set_row_spacings(SPACING)
+ y = 0
+
+ # Piece size
+ self.table.attach(ralign(gtk.Label(_("Piece size:"))),0,1,y,y+1,
+ xoptions=gtk.FILL, yoptions=0)
+
+ self.piece_size = gtk.combo_box_new_text()
+ self.piece_size.offset = 15
+ for i in range(7):
+ self.piece_size.append_text(str(Size(2**(i+self.piece_size.offset))))
+ self.piece_size.set_active(self.config['piece_size_pow2'] -
+ self.piece_size.offset)
+
+ self.piece_size_box = gtk.HBox(spacing=SPACING)
+ self.piece_size_box.pack_start(self.piece_size,
+ expand=False, fill=False)
+ self.table.attach(self.piece_size_box,1,2,y,y+1,
+ xoptions=gtk.FILL|gtk.EXPAND, yoptions=0)
+ y+=1
+
+
+ # Announce URL / Tracker
+ self.tracker_radio = gtk.RadioButton(group=None, label=_("Use _tracker:"))
+ self.tracker_radio.value = True
+
+ self.table.attach(self.tracker_radio,0,1,y,y+1,
+ xoptions=gtk.FILL, yoptions=0)
+ self.announce_entry = gtk.Entry()
+ self.announce_completion = gtk.EntryCompletion()
+ self.announce_entry.set_completion(self.announce_completion)
+ self.announce_completion.set_text_column(0)
+ self.build_completion()
+
+ self.tracker_radio.entry = self.announce_entry
+ if self.config['use_tracker'] == self.tracker_radio.value:
+ self.announce_entry.set_sensitive(True)
+ else:
+ self.announce_entry.set_sensitive(False)
+
+ if self.config['tracker_name']:
+ self.announce_entry.set_text(self.config['tracker_name'])
+ elif len(self.tracker_list):
+ self.announce_entry.set_text(self.tracker_list[0])
+ else:
+ self.announce_entry.set_text('http://my.tracker:6969/announce')
+
+ self.announce_entry.set_size_request(right_column_width,-1)
+ self.table.attach(self.announce_entry,1,2,y,y+1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=0)
+ y+=1
+
+ # DHT / Trackerless
+ self.dht_radio = gtk.RadioButton(group=self.tracker_radio,
+ label=_("Use _DHT:"))
+ self.dht_radio.value = False
+
+ self.table.attach(align(self.dht_radio,0,0), 0,1,y,y+1,
+ xoptions=gtk.FILL|gtk.EXPAND, yoptions=0)
+
+ self.dht_nodes_expander = gtk.Expander(_("Nodes (optional):"))
+ self.dht_nodes_expander.connect('size-allocate', self.resize_to_fit)
+
+ self.dht_nodes = NodeList(self, 'router.bittorrent.com:6881')
+ self.dht_frame = gtk.Frame()
+ self.dht_frame.add(self.dht_nodes)
+ self.dht_frame.set_shadow_type(gtk.SHADOW_IN)
+ self.dht_nodes_expander.add(self.dht_frame)
+
+ self.table.attach(self.dht_nodes_expander,1,2,y,y+1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=0)
+ self.dht_radio.entry = self.dht_nodes
+
+ if self.config['use_tracker'] == self.dht_radio.value:
+ self.dht_nodes.set_sensitive(True)
+ else:
+ self.dht_nodes.set_sensitive(False)
+
+ y+=1
+
+ for w in self.tracker_radio.get_group():
+ w.connect('toggled', self.toggle_tracker_dht)
+
+ for w in self.tracker_radio.get_group():
+ if w.value == bool(self.config['use_tracker']):
+ w.set_active(True)
+ else:
+ w.set_active(False)
+
+ # Hsep
+ self.table.attach(gtk.HSeparator(),0,2,y,y+1,yoptions=0)
+ y+=1
+
+ # Comment
+ self.comment_expander = gtk.Expander(_("Comments:"))
+ self.comment_expander.connect('size-allocate', self.resize_to_fit)
+
+ self.comment_buffer = gtk.TextBuffer()
+ self.comment_text = gtk.TextView()
+ self.comment_text.set_buffer(self.comment_buffer)
+ self.comment_text.set_wrap_mode(gtk.WRAP_WORD)
+ self.comment_scroll = gtk.ScrolledWindow()
+ self.comment_scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
+ self.comment_scroll.set_shadow_type(gtk.SHADOW_IN)
+ self.comment_scroll.add(self.comment_text)
+
+ self.comment_expander.add(self.comment_scroll)
+ self.table.attach(self.comment_expander,0,2,y,y+1,
+ xoptions=gtk.FILL, yoptions=0)
+ y+=1
+
+ # add table
+ self.box.pack_start(self.table, expand=True, fill=True, padding=0)
+
+ # buttons
+
+ self.buttonbox = gtk.HBox(homogeneous=True, spacing=SPACING)
+
+ self.quitbutton = gtk.Button(stock=gtk.STOCK_CLOSE)
+##=======
+## # Piece size
+## self.table.attach(ralign(gtk.Label('Piece size:')),0,1,y,y+1,
+## xoptions=gtk.FILL, yoptions=0)
+
+
+## self.piece_size_box = gtk.HBox(spacing=SPACING)
+## self.piece_size_box.pack_start(self.piece_size, expand=False, fill=False)
+## self.table.attach(self.piece_size_box,1,2,y,y+1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=0)
+## y+=1
+
+
+## self.box.pack_start(self.table, expand=True, fill=True)
+
+## self.buttonbox = gtk.HBox(homogeneous=True, spacing=SPACING)
+
+## self.quitbutton = gtk.Button(stock=gtk.STOCK_QUIT)
+##>>>>>>> remote
+ self.quitbutton.connect('clicked', self.quit)
+ self.buttonbox.pack_start(self.quitbutton, expand=True, fill=True)
+
+ self.buttonbox.pack_start(gtk.Label(''), expand=True, fill=True)
+
+ self.makebutton = IconButton(_("_Make"), stock=gtk.STOCK_EXECUTE)
+ self.makebutton.connect('clicked', self.make)
+ self.makebutton.set_sensitive(False)
+ self.buttonbox.pack_end(self.makebutton, expand=True, fill=True)
+
+ self.box.pack_end(self.buttonbox, expand=False, fill=False)
+
+ self.announce_entry.connect('changed', self.check_buttons)
+ self.filebox.connect('changed', self.check_buttons)
+ for w in self.tracker_radio.get_group():
+ w.connect('clicked', self.check_buttons)
+
+ self.box.pack_end(gtk.HSeparator(), expand=False, fill=False)
+
+ self.add(self.box)
+
+# HelpWindow(None, makeHelp('maketorrent', defaults))
+
+ self.box.show_all()
+## extraheight = self.dht_frame.size_request()[1] + \
+## self.comment_scroll.size_request()[1]
+## sr = self.box.size_request()
+## self.resize(sr[0] + SPACING*2, sr[1]+extraheight + SPACING*2)
+ self.resize_to_fit()
+ self.show_all()
+
+ def toggle_tracker_dht(self, widget):
+ if widget.get_active():
+ self.config['use_tracker'] = widget.value
+
+ for e in [self.announce_entry, self.dht_nodes]:
+ if widget.entry is e:
+ e.set_sensitive(True)
+ else:
+ e.set_sensitive(False)
+
+ def choose_files(self,widget):
+ fn = None
+ if self.config['torrent_dir']:
+ fn = self.config['torrent_dir']
+ else:
+ fn = Desktop.desktop
+
+ FileOrFolderSelection(self, fullname=fn,
+ got_multiple_location_func=self.add_files)
+
+ def add_files(self, names):
+ for name in names:
+ self.filebox.set_text(name)
+ torrent_dir = os.path.split(name)[0]
+ if torrent_dir[-1] != os.sep:
+ torrent_dir += os.sep
+ self.config['torrent_dir'] = torrent_dir
+
+ def get_piece_size_exponent(self):
+ i = self.piece_size.get_active()
+ exp = i+self.piece_size.offset
+ self.config['piece_size_pow2'] = exp
+ return exp
+
+ def get_file(self):
+ return self.filebox.get_text()
+
+ def get_announce(self):
+ if self.config['use_tracker']:
+ announce = self.announce_entry.get_text()
+ self.config['tracker_name'] = announce
+ else:
+ announce = self.dht_nodes.get_text()
+ return announce
+
+ def make(self, widget):
+ file_name = self.get_file()
+ piece_size_exponent = self.get_piece_size_exponent()
+ announce = self.get_announce()
+ comment = self.comment_buffer.get_text(
+ *self.comment_buffer.get_bounds())
+
+ if self.config['use_tracker']:
+ self.add_tracker(announce)
+ errored = False
+ if not errored:
+ d = ProgressDialog(self, [file_name,], announce,
+ piece_size_exponent, comment)
+ d.main()
+
+ def check_buttons(self, *widgets):
+ file_name = self.get_file()
+ tracker = self.announce_entry.get_text()
+ if file_name not in (None, ''):
+ if self.config['use_tracker']:
+ if len(tracker) >= len('http://x.cc'):
+ self.makebutton.set_sensitive(True)
+ else:
+ self.makebutton.set_sensitive(False)
+ else:
+ self.makebutton.set_sensitive(True)
+ else:
+ self.makebutton.set_sensitive(False)
+
+ def save_config(self):
+ def error_callback(error, string): print string
+ configfile.save_ui_config(self.config, 'maketorrent', ui_options, error_callback)
+
+ def quit(self, widget):
+ self.save_config()
+ self.destroy()
+
+ def add_tracker(self, tracker_name):
+ try:
+ self.tracker_list.pop(self.tracker_list.index(tracker_name))
+ except ValueError:
+ pass
+ self.tracker_list[0:0] = [tracker_name,]
+
+ self.config['tracker_list'] = ','.join(self.tracker_list)
+ self.build_completion()
+
+ def build_completion(self):
+ liststore = gtk.ListStore(gobject.TYPE_STRING)
+ for t in self.tracker_list:
+ liststore.append([t])
+ self.announce_completion.set_model(liststore)
+
+ def resize_to_fit(self, *args):
+ garbage, y = self.size_request()
+ x, garbage = self.get_size()
+ gobject.idle_add(self.resize, x, y)
+
+
+class AppWindow(MainWindow):
+ def quit(self, widget):
+ MainWindow.quit(self, widget)
+ gtk.main_quit()
+
+
+class NodeList(gtk.TreeView):
+ def __init__(self, parent, nodelist):
+ self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ pre_size_list = ['router.bittorrent.com', '65536']
+ self.store.append(pre_size_list)
+
+ gtk.TreeView.__init__(self, self.store)
+ self.set_enable_search(False)
+
+ self.host_render = gtk.CellRendererText()
+ self.host_render.set_property('editable', True)
+ self.host_column = gtk.TreeViewColumn(_("_Host"), self.host_render,
+ text=0)
+ self.append_column(self.host_column)
+ self.host_render.connect('edited', self.store_host_value)
+
+ self.port_render = gtk.CellRendererText()
+ self.port_render.set_property('editable', True)
+ self.port_column = gtk.TreeViewColumn(_("_Port"), self.port_render,
+ text=1)
+ self.append_column(self.port_column)
+ self.port_render.connect('edited', self.store_port_value)
+
+ #self.columns_autosize()
+ #self.host_column.set_fixed_width(self.host_column.get_width())
+ #self.host_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ #self.realize()
+ #self.port_column.set_fixed_width(self.port_column.get_width())
+ #self.port_column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+
+ self.store.clear()
+
+ for i, e in enumerate(nodelist.split(',')):
+ host, port = e.split(':')
+ self.store.append((host, port))
+
+ if i < MAXIMUM_NODES - 1:
+ self.store.append(('',''))
+
+ def store_host_value(self, cell, row, value):
+ parts = value.split('.')
+ if value != '':
+ for p in parts:
+ if not p.isalnum():
+ return
+ try:
+ value = value.encode('idna')
+ except UnicodeError:
+ return
+ it = self.store.get_iter_from_string(row)
+ self.store.set(it, 0, str(value))
+ self.check_row(row)
+
+ def store_port_value(self, cell, row, value):
+ if value != '':
+ try:
+ v = int(value)
+ if v > 65535:
+ value = 65535
+ if v < 0:
+ value = 0
+ except:
+ return # return on non-integer values
+ it = self.store.get_iter_from_string(row)
+ self.store.set(it, 1, str(value))
+ #curs = self.get_cursor()
+ #print curs
+ #print type(curs[0][0])
+
+ self.check_row(row)
+ #newpath = ((int(row)+1,), self.port_column)
+ #print newpath
+ #self.set_cursor(newpath)
+
+ def check_row(self, row):
+ # called after editing to see whether we should add a new
+ # blank row, or remove the now blank currently edited row.
+ it = self.store.get_iter_from_string(row)
+ host_value = self.store.get_value(it, 0)
+ port_value = self.store.get_value(it, 1)
+ if host_value and port_value and \
+ int(row) == len(self.store)-1 and \
+ int(row) < MAXIMUM_NODES -1 :
+ self.store.append(('',''))
+ elif host_value == '' and \
+ port_value == '' and \
+ int(row) != len(self.store)-1:
+ self.store.remove(it)
+
+ def get_nodes(self):
+ retlist = []
+ it = self.store.get_iter_first()
+ while it:
+ host = self.store.get_value(it, 0)
+ port = self.store.get_value(it, 1)
+ if host != '' and port != '':
+ retlist.append((host,port))
+ it = self.store.iter_next(it)
+ return retlist
+
+ def get_text(self):
+ nodelist = self.get_nodes()
+ return ','.join(['%s:%s'%node for node in nodelist])
+
+
+class ProgressDialog(gtk.Dialog):
+
+ def __init__(self, parent, file_list, announce, piece_length, comment):
+ gtk.Dialog.__init__(self, parent=parent, flags=gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT)
+ self.set_size_request(400,-1)
+ self.set_border_width(SPACING)
+ self.set_title(_("Building torrents..."))
+ self.file_list = file_list
+ self.announce = announce
+ self.piece_length = piece_length
+ self.comment = comment
+
+ self.flag = Event() # ???
+
+ self.label = gtk.Label(_("Checking file sizes..."))
+ self.label.set_line_wrap(True)
+
+ self.vbox.set_spacing(SPACING)
+ self.vbox.pack_start(lalign(self.label), expand=False, fill=False)
+
+ self.progressbar = gtk.ProgressBar()
+ self.vbox.pack_start(self.progressbar, expand=False, fill=False)
+
+ self.cancelbutton = gtk.Button(stock=gtk.STOCK_CANCEL)
+ self.cancelbutton.connect('clicked', self.cancel)
+ self.action_area.pack_end(self.cancelbutton)
+
+ self.show_all()
+
+ self.done_button = gtk.Button(stock=gtk.STOCK_OK)
+ self.done_button.connect('clicked', self.cancel)
+
+ self.seed_button = gtk.Button(_("Start seeding"))
+ self.seed_button.connect('clicked', self.seed)
+
+ def main(self):
+ self.complete()
+
+ def seed(self, widget=None):
+ for f in self.file_list:
+ btspawn(None, 'bittorrent', f+EXTENSION, '--save_as', f)
+ self.cancel()
+
+ def cancel(self, widget=None):
+ self.flag.set()
+ self.destroy()
+
+ def set_progress_value(self, value):
+ self.progressbar.set_fraction(value)
+ self._update_gui()
+
+ def set_file(self, filename):
+ self.label.set_text(_("building ") + filename + EXTENSION)
+ self._update_gui()
+
+ def _update_gui(self):
+ while gtk.events_pending():
+ gtk.main_iteration(block=False)
+
+ def complete(self):
+ try:
+ make_meta_files(self.announce,
+ self.file_list,
+ flag=self.flag,
+ progressfunc=self.set_progress_value,
+ filefunc=self.set_file,
+ piece_len_pow2=self.piece_length,
+ comment=self.comment,
+ use_tracker=config['use_tracker'],
+ data_dir=config['data_dir'],
+ )
+ if not self.flag.isSet():
+ self.set_title(_("Done."))
+ self.label.set_text(_("Done building torrents."))
+ self.set_progress_value(1)
+ self.action_area.remove(self.cancelbutton)
+ self.action_area.pack_start(self.seed_button)
+ self.action_area.pack_start(self.done_button)
+ self.seed_button.show()
+ self.done_button.show()
+ except (OSError, IOError), e:
+ self.set_title(_("Error!"))
+ self.label.set_text(_("Error building torrents: ") + str(e))
+
+
+
+
+def run():
+ config, args = configfile.parse_configuration_and_args(defaults,
+ 'maketorrent', [], 0, None)
+ MainWindow(config)
+
+
+if __name__ == '__main__':
+ config, args = configfile.parse_configuration_and_args(defaults,
+ 'maketorrent', sys.argv[1:], 0, None)
+ AppWindow(config)
+ try:
+ gtk.main()
+ except KeyboardInterrupt:
+ # gtk.mainloop not running
+ # exit and don't save config options
+ sys.exit(1)
diff --git a/po/af.po b/po/af.po
new file mode 100644
index 0000000..e4a35e2
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,3120 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-23 10:37-0800\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installeer Python %s of groter"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "verouderd, moenie gebruik nie"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Kon nie met ander %s proses kommunikeer nie, maar een loop klaarblyklik."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Miskien sal die sluiting van alle %s vensters die probleem oplos."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s loop alreeds"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kon nie met ander %s proses kommunikeer nie."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s of latere weergawe benodig "
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "sleep om te herskik"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "regter muisknoppie vir kieslys"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "inbelverbinding"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "ADSL/kabel 128k op"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "ADSL/kabel 256k op"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "ADSL/kabel 768k op"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Voer in torrent URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Voer in die URL van die torrentlêer om oop te maak:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksimum oplaaitempo:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Staak tydelik alle aktiewe torrents"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Hervat aflaaiing"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nuwe weergawe %s beskikbaar"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "'n Nuwer weergawe van %s is beskikbaar.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "U gebruik %s, en die nuwe weergawe is %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"U kan altyd die nuutste weergawe bekom van \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Laai later af"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Laai nou af"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Herinner my later"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Aangaande %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Weergawe %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Kon nie %s oopmaak nie"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Gee 'n donasie"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Aktiwiteitslog"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Stoor log in:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "log gestoor"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "log skoongemaak"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Instellings"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Algemeen"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Laat BitTorrent begin wanneer Windows begin loop"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Maak klein en wys in die sisteembalk"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Teks van vorderingsstafie is altyd swart\n"
+"(moet program weer begin)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Besig om te stoor"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Stoor nuwe afgelaaide materiaal in:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Wysig..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+"Vra waar elke keer waar om die nuwe materiaal wat afgelaai word te stoor"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Besig om af te laai"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Wanneer met 'n nuwe torrent begin word..."
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Staak 'n ander lopende torrent om plek te maak"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Moenie ander lopende torrents staak nie"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Vra telkens"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Besig om te saai"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Saai voltooide torrents: totdat deelverhouding [_] persent bereik, of vir "
+"[_] minute, wat ookal eerste kom."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Saai vir onbeperkte tyd"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Saai laaste voltooide torrent: totdat deelverhouding [_] persent bereik."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Netwerk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Soek beskikbare poort:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "beginnende by poort:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Maak outomatiese poortkartering moontlik"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP om aan spoorsnyer te rapporteer:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Het geen uitwerking tensy u op dieselfde\n"
+"lokale netwerk as die spoorsnyer is)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"WAARSKUWING: Verandering van hierdie instellings kan\n"
+"verhinder dat %s korrek werk."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opsie"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Waarde"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Gevorderde"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Kies om af te laai na die lêer wat outomaties geskep word"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Kon nie kortpadskakel verwyder nie: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Lêers in \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nooit"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Moet nooit aflaai nie"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Gewoon"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Laai gewoonweg af"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Eerste"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Laai eerste af"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Lêernaam"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lengte"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Laai af"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nooit"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "eerste"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers vir \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-adres"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Kliënt"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Konneksie"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s af"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s op"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB afgelaai"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB opgelaai"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% voltooi"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s wat peer ong. aflaai"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Stel belang"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Beknop"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Afgewys"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistiese oplaai"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "afgeleë"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "plaaslik"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "slegte peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d goed"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d sleg"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "belet"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "goed"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info vir \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentnaam:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sonder spoorsnyer)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Maak url bekend:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", in een lêer"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", in %d lêers"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Totale grootte:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Dele:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informasie-allegaartjie :"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Stoor in:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Lêernaam:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "Maak wortel_oop"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Wys _lêerlys"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Verwyder torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Staak torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", sal saai vir %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", sal saai vir 'n onbeperkte tyd."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Voltooi, deelverhouding: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Voltooi, %s opgelaai"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Voltooi"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lêerlys"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peerlys"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Verander ligging"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Saai vir onbeperkte tyd"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Begin_weer"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Eindig"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Verwyder"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Staak"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Is u seker u wil \"%s\" verwyder?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "U deelverhouding vir hierdie torrent is %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "U het %s aan hierdie torrent opgelaai."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Verwyder hierdie torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Klaar"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "sleep in lys in om te saai"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Gefaal"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "sleep in lys in om te hervat"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Besig om te wag"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Gepouseer"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Besig om te loop"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Huidig op: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Huidig af: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Voorheen op: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Voorheen af: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Deelverhouding: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s sade. Totale van spoorsnyer: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Uitgedeelde kopieë: %d; Volgende: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Dele: %d totaal, %d voltooi, %d gedeeltelik, %d aktief (%d leeg)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d slegte dele + %s in weggegooide versoeke"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% klaar, %s oor"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Aflaaisnelheid"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Oplaaisnelheid"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NB"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s begin"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Gaan uit"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr "_Suit af"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Maak torrentlêer oop"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Maak torrent _URL oop"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Maak _nuwe torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pouseer/Speel"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Wys/versteek _voltooide torrents"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Pas grootte van venster aan"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Instellings"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hulp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Aangaande"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Gee 'n donasie"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Lêer"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Aansig"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Soek torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(gestaak)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(veelvuldige)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Laai reeds %s installeerder af"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installeer nuwe %s nou?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Wil u %s beëindig en die nuwe uitgawe, %s, nou installeer?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s hulp is by \n"
+"%s\n"
+"Wil u nou daarheen gaan?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Besoek hulpwebbladsy?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Daar is een voltooide torrent in die lys."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Wil u dit verwyder?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Daar is %d voltooide torrents in die lys."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Wil u hulle almal verwyder?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Verwyder alle voltooide torrents?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Geen voltooide torrents"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Daar is geen voltooide torrents om te verwyder nie."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Maak torrent oop:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Verander stoorligging vir"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Lêer bestaan al!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" bestaan al. Wil u 'n ander lêernaam kies?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Stoorligging vir"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Wortel bestaan al!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" bestaan al. Wil u 'n tweede identiese wortel in die bestaande wortel "
+"skep?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globale boodskap) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Foutief"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Veelvuldige foute het ingetree. Kliek OK om die foutlog te sien."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Staak lopende torrent?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+"U is op die punt om \"%s\" te begin. Wil u 'n ander lopende torrent ook "
+"staak?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Het u 'n donasie gegee?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Welkom by die nuwe weergawe van %s. Het u 'n donasie gegee?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Dankie!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Dankie vir u donasie! Om weer 'n donasie te gee, kies \"Gee 'n donasie\" uit "
+"die \"Hulp\" kieslys."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Kon nie die TorrentQueue begin nie, sien bo vir foute."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrentlêerskepper %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Maak torrentwortel vir hierdie lêer/wortel:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Kies..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Wortels sal lot-torrents word)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Grootte van deel:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Gebruik _spoorsnyer:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Gebruik _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nodes (opsioneel):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentaar:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Maak"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Gasheer"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Poort"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Besig om torrents te bou..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Besig om lêergroottes na te gaan..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Begin om te saai"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "besig om te bou"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Voltooi."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrents klaar gebou."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Fout!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Fout tydens die bou van torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s of later weergawe benodig"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dae"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dag %d ure"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ure"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minute"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekondes"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekondes"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hulp"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Kwelvrae:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Gaan"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Kies 'n bestaande lêer..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alle lêers"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Skep 'n nuwe lêer..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Kies 'n lêer"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Kies 'n lêer"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Kon nie gestoorde toestand laai nie:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Toestand van bedienoppervlak kon nie gestoor word nie:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Inhoud van toestandlêer ongeldig"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Fout tydens lees van lêer \"%s\""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "kan toestand nie heeltemal herstel nie"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ongeldige toestandlêer (dubbele inskrywing)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Korrupte data in \"%s\", kan nie torrent herstel nie."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "Info-allegaartjie verkeerd toeskryf"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ongeldige toestandlêer (onaanvaarbare inskrywing)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Ongeldige toestandlêer vir grafiese koppelvlak"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Slegte weergawenommer van toestandlêer vir grafiese koppelvlak"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Nie-ondersteunde weergawe van toestandlêer vir grafiese koppelvlak (van 'n "
+"nuwer kliëntweergawe?) "
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Kon gekasde lêer %s nie skrap nie:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Hierdie is nie 'n korrekte torrentlêer nie. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Hierdie torrent (of een met dieselfde inhoud) loop alreeds."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Hierdie torrent (of een met dieselfde inhoud) wag alreeds om te loop."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent in onbekende toestand %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Kon lêer nie skryf nie"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "wanneer die kliënt weer begin sal die torrent nie korrek herbegin nie"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Kan nie meer as %d torrents terselfdertyd loop nie. Vir meer info lees die "
+"FAQ by %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrent word nie begin nie omdat ander torrents wag om te loop, en hierdie "
+"een voldoen reeds aan die instellings wat bepaal wanneer daar opgehou moet "
+"word om te saai."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"Torrent word nie begin nie omdat dit reeds voldoen aan die instellings wat "
+"bepaal wanneer om op te hou om die laaste voltooide torrent te saai. "
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Kon nie die nuutste weergawe van %s bekom nie"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Kon nie die weergawe van %s uitpluis nie"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Kon nie 'n geskikte tydelike ligging vind om die %s %s installeerder in te "
+"stoor nie."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Geen torrentlêer beskikbaar vir die %s %s installeerder nie."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s installeerder is klaarblyklik onvolledig, weg, of korrup."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Kan nie die installeerder op hierdie bedryfstelsel laat loop nie"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Geen torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Begin om af te laai"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Loop normaal"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+"Laai moontlik stadig af:\n"
+"Moontlik agter vuurmuur/NATted"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kontrolleer netwerkligging"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+"wortel waaronder veranderlike data soos \"fastresume\"-informasie en "
+"toestand van grafiese oppervlak gestoor word. Grondwaarde is die subwortel "
+"'data' van die bittorrent config-wortel."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"karakterenkodering wat op die lokale lêersisteem gebruik word. Indien leeg "
+"gelaat, word dit outomaties opgespoor. Outomatiese opsporing werk nie met "
+"python werkgawes ouer as 2.3 nie"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO-taalkode om te gebruik"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+"IP om aan die spoorsnyer te rapporteer (het geen effek nie tensy u op "
+"dieselfde plaaslike netwerk as die spoorsnyer is nie)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+"wêreld-sigbare poortnommer indien dit verskil van dié waarna die kliënt "
+"plaaslik luister"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"minimum poortnommer om na te luister, word opgetel indien nie beskikbaar nie"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "maksimum poortnommer om na te luister"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP om plaaslik mee te verbind"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekondes tussen opdatering van vertoonde inligting "
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minute om te wag voordat meer peers versoek word"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimum aantal peers sodat nie herversoek word nie"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "aantal peers wanneer nuwe verbindings nie meer gemaak moet word nie"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maksimum aantal onvolledige uitgaande konneksies"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+"maksimum aantal verbindings om toe te laat,na hierdie sal nuwe inkomende "
+"konneksies dadelik gesluit word"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "om allegaartjies op skyf te kontrolleer"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maksimum kB/s om te upload, 0 beteken onbeperk"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"die aantal oplaaiings om te lewer met ekstra-optimistiese teen-beknoppings"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"die maksimum aantal lêers in 'n multi-lêertorrent om gelyktydig oop te hou, "
+"0 beteken onbeperk. Word gebruik om te verhoed dat alle lêerbeskrywers "
+"opgebruik word."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+"Laat 'n kliënt sonder spoorsnyer loop. Hierdie moet aangestel wees om "
+"spoorsnylose torrents af te laai."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "aantal sekondes om te wag tussen die uitstuur van lewensredders"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "aantal bytes wat per versoek aangevra kan word"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+"maksimale lengte van prefiksenkodering wat op die lyn aanvaar sal word - "
+"groter waardes sal die konneksie laat afbreek."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"sekondes om te wag tussen die sluiting van proppe wat niks ontvang het nie"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"sekondes om te wag voordat gekontrolleer word of enige konneksies uitgetel "
+"het"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+"maksimum lengte skyfie om aan peers te stuur, sluit die konneksie indien 'n "
+"groter een aangevra word"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+"maksimale tydsinterval waarmee huidige oplaai- en aflaaitempo's bereken word"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "maksimale tydsinterval waarmee huidige saaiingstempo bereken word"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"maksimum tyd om te wag voordat aankondigings herhaal word indie hulle sou "
+"faal"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+"sekondes om te wag vir data om in te kom oor 'n verbinding voordat aangeneem "
+"word dat dit semi-permanent geblokkeer is"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"aantal aflaaiings waarby omgeskakel word van willekeurig na die mees selde "
+"eerste"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "hoeveel bytes op 'n slag in netwerkbuffers geskryf word."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+"weier verdere verbindings met adresse met onvolledige data of met peers wat "
+"moedswillig foutiewe data stuur"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "moenie met verskeie peers verbind wat dieselfde IP adres het nie"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"indien nie 0 nie, stel die TOS-opsie vir peer-verbindings in met hierdie "
+"waarde"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"aktiveer omgaan van 'n fout in BSD libc wat die lees van lêers baie stadig "
+"maak."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adres van HTTP instaanbediener om te gebruik vir spoorsnyerverbindings"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "sluit verbindings met RST en vermy die TCP TIME_WAIT toestand"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Gebruik Twisted netwerkbiblioteke vir netwerkverbindings. 1 beteken bebruik "
+"Twisted, 0 beteken moenie Twisted gebruik nie, -1 beteken outomatiese "
+"opsporing en Twisted word verkies"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"lêernaam (vir enkellêer-torrents) of wortelnaam (vir lot-torrents)om die "
+"torrent 'n naam te gee en die outomatiese naam te omseil.sien ook--stoor_in, "
+"indien geeneen gespesifiseer word nie sal die gebruiker gevra word om die "
+"stoorligging"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "vertoon gevorderde gebruikerkoppelvlak"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+"die maksium aantal minute om 'n voltooide torrent te saai voordat opgehou "
+"word om te saai"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+"die minimum oplaai/aflaaiverhouding, in persent, wat bereik moet word "
+"voordat opgehou word om te saai. 0 beteken onbeperk."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+"die minimum oplaai/aflaaiverhouding, in persent, wat bereik moet word "
+"voordat opgehou word om die laaste torrent te saai. 0 beteken onbeperk."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Saai elke voltooide torrent vir onbeperkte tyd (totdat die gebruiker dit "
+"kanseleer)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Saai die laaste torrent vir onbeperkte tyd (totdat die gebruiker dit "
+"kanseleer)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "Begin aflaaier in gepouseerde toestand"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+"Spesifiseer hoe die program moet reageer wanneer die gebruiker self nog 'n "
+"torrent wil begin loop: \"vervang\" beteken dat die lopende torrent altyd "
+"met die nuwe een vervang moet word, \"byvoeg\" beteken dat die lopende "
+"torrent altyd parallel bygevoeg moet word, en \"vra\" beteken dat die "
+"gebruiker telkens gevra moet word."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Begin BitTorrent verklein"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+"Omseil die weergawe wat deur die http kontrole-weergawe voorsien is en "
+"skakel die kontrole-weergawe in teenvirus-mode aan"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+"Omseil die huidige weergawe wat in die kontrole-weergawe gebruik word en "
+"skakel die kontrole-weergawe in teenvirus-mode aan"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"Spisifiseer venstergrootte en -posisie in dié formaat:WYDTExHOOGTExXASxYAS"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+"lêernaam (vir enkellêer-torrents) of wortelnaam (vir lot-torrents)om die "
+"torrent 'n naam te gee en die outomatiese naam in die torrent te omseil.Sien "
+"ook--stoor_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+"die maksimum aantal om tegelyk op te laai. -1 beteken 'n (hopelik) "
+"aanvaarbare aantal gebasseer op die --maksimum_oplaaitempo, Die "
+"outomatioese waardes maak slegs sin indien net een torrent op 'n slag loop."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+"Pllaslike wortel waar die torrentiênhoud gestoor dal word. Die lêer "
+"(enkellêer-torrents) of wortel (lot-torrents) sal onder hierdie wortel "
+"geskep word en die outomatiese naam soos gespesifiseer in die .torrent-"
+"lêer. Sien ook -- stoor_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "om te vra - of nie - vir 'n ligging waar afgelaaide leers gestoor word"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+"plaaslike wortel waar torrents gestoor sal word, met 'n leernaam bepaal deur "
+"--stooras_formaat. As dit leeg is, sal elke torrent onder die wortel van die "
+"ooreenkomstige .torrent leer gestoor word"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "Hoe gerreld die torrentwortel nagegaan moet word, in sekondes"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+"wag soveel sekondes nadat 'n torrent raakgesien is voordat dit begin loop, "
+"om 'n wedloop met 'n spoorsnyer te voorkom"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+"Hoe om afgelaaide torrents name te gee:1: gebruik die naam van die "
+"torrentlêer (sonder .torrent); 2: gebruik die naam soos ingebou in die "
+"torrentlêer; 3: skep 'n wortel met dieselfde naam as die torrentlêer "
+"(sonder .torrent) en stoor dit in daardie wortel met die naam ingebou in die "
+"torrentlêer; 4: indien die naam van die torrentlêer (sonder .torrent) en die "
+"naam ingebou in die torrentlêer dieselfde is, gebruik daardie naam (styl "
+"1/2), skep andersins 'n tussenwortel in styl 3; WAARSKUWING: opsies 1 en 2 "
+"het die vermoë om lëers sonder waarskuwing oor te skryf en kan daarom 'n "
+"invloed op sekuriteit hê."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"Of die volledige roete of die inhoud van die torrent vir elke torrent "
+"aangetoon moet word"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+"wortel waarin gekyk moet word vir .torrent-lêers (gedeeltelik herhalend)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "of die diagnostiese inligting by stdout aangedui moet word"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "tot watter mag van twee die grootte van die deel gestel moet word"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "outomatiese spoorsnyernaam"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+"indien vals, maak 'n spoorsnyerlose torrent, in plaas daarvan om die URL aan "
+"te kondig, gebruik die betroubare node in die formaat <ip>:<poort> of 'n leê "
+"string om sekere nodes van u herleidingsrooster af te haal"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "volledig afgelaai!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<onbekend>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "sal klaarmaak oor %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "suksesvol afgelaai"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB op / %.1f MB af)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB op / %.1f MB af)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d nou sigbaar, plus %d verdeelde kopiëe (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d verdeelde kopiëe (volgende: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d nou sigbaar"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FOUT:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "besig om te stoor:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "lêergrootte:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "persentasie voltooi:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tyd oor:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "aflaai na:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "aflaaitempo:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "oplaaitempo:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "deelverhouding:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "saadstatus:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peerstatus:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "U mag nie beide --save_as en --save_in aangee nie"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "besig om af te sluit"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Fout tydens lees van konfigurasie:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Fout tydens lees van .torrentlêer:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "u moet 'n .torrentlêer aangee"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Teksmodus GUI kon nie geïnisialiseer word nie, kan dus nie voortgaan nie."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+"Hierdie aflaaibedienoppervlak benodig die standaard Python module \"curses"
+"\", wat ongelukkig nie beskikbaar is vir die natuurlike Windows poort van "
+"Python nie. Maar dit is wel beskikbaar vir die Cygwin poort van Python, wat "
+"op alle Win32 stelsels werk (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "U kan steeds die \"bittorrent-console\" gebruik om af te laai."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "lêer:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "grootte:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "bestemming:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "vooruitgang:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "aflaaisnelheid:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "oplaaisnelheid:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "besig om te deel:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sade:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d nou gesien, plus %d uitgedeelde kopiëe (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "fout(e):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "fout:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Oplaai Aflaai Voltooi Snelheid"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "laai %d dele af, het %d fragmente, %d van %d dele voltooi"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Hierdie foute het gedurende die uitvoering ingetree:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Gebruik: %s TRACKER_URL [TORRENTLêER [TORRENTLêER ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "ou bekendstelling vir %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "geen torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "STELSELFOUT - UITSONDERING GESKEP"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Waarskuwing:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "is nie 'n wortel nie"
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+"fout: %s\n"
+"sonder argumente vir parameter verduidelikings"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+"\n"
+"UITSONDERING:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "U kan steeds \"btdownloadheadless.py\" gebruik om af te laai."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "bou verbinding op met peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA in %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Grootte"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Oplaai"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totale:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr " (%s) %s - %s peers %s sade %s verdeelde kopiëe - %s af %s op"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "fout:"
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+"\n"
+"voer sonder argumente uit om verduideling van parameters te bekom"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "opsionele mens-leesbare kommentaar om in .torrent te plaas"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "opsionele teikenlêer vir die torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dekodeer %s meta-infolêers"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Gebruiks: %s [TORRENTLêER [TORRENTLêER ...]]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "meta-infolêer: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info-allegaartjie: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "lêernaam: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "lêergrootte:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "lêers:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "wortelnaam: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "argiefgrootte:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "spoorsnyer kondig url aan :%s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "spoorsnyerlose nodes:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "kommentaar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Maan"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Dins"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Woens"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Don"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Vry"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sat"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Son"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mrt"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mei"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sept"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Des"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Saamgepers: %i Nie saamgepers: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Kon nie opsies permanent stoor nie"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "Fout tydens lees van die config-lêer. Ou config-lêer gestoor in \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Konfigurasie opsie veerkeerdelik toewys '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "U moet uit %s gaan en dit herinstalleer. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Kon nie vertaling vir taal \"%s\" vind nie\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Lêer %s behoort tot 'n ander lopende torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Lêer %s bestaan reeds, maar dis nie 'n gewone lêer nie"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Verkorte lesing - iets afgekapte lêers?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Fastresume lêerformaat nie ondersteun nie, behalwe dalk van 'n ander "
+"kliëntweergawe?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+"'n Ander program het klaarblyklik die lêer verskuif, hernoem, of uitgevee, "
+"of %s het moontlik ineengestort die vorige keer toe dit geloop het."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+"'n Ander program het klaarblyklik die lêer verander, of %s het moontlik "
+"ineengestort die vorige keer toe dit geloop het."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+"'n Ander program het klaarblyklik die lêergrootte verander, of %s het "
+"moontlik laaskeer ineengestort toe dit geloop het."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Kon nie die fastresume data lees nie"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "verbinding geweier"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"U het versoek dat hergebruik afgestel moet wees tydens verbinding. Jammer, "
+"ek kan dit nie doen nie."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "luister_altyd() behoort slegs eenkeer per reaksie geroep te word"
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+"luister_eenkeer() sal moontlik nie terugkom totdat daar aktiwiteit is nie, "
+"en sal moontlik nie die gebeure wat u verwag verwerk nie. Gebruik "
+"luiter_altyd()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Slegte data in die responsefile - totaal te klein"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "slegte data in responsefile - totaal te groot"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "Besig om bestaande lêer te kontrolleer"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--kontrolleer_allegaartjies 0 of fastresume inligting stem nie ooreen met "
+"die lêertoestand nie (vermiste data)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Slegte fastresume inligting (lêers bevat meer data)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Slegte fastresume inligting (ongeldige waarde)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "data op skyf korrup - dalk het u twee kopiëe wat loop?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"Lêer aangedui as voltooid toe program oopgemaak is, maa die gedeelte kon nie "
+"die allegaartjie-toets deurstaan nie"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Kon nie seinhanteerder instel nie:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "afgeneem \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "bygevoeg \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "besig om te wag vir die allegaartjie-kontrole"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "besig om af te laai"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "besig om config-lêer weer te lees"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+"u kan nie die naam van die .torrentlêer spesifiseer wanneer u verskeie "
+"torrents terselfdertyd skep nie"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"Lêerstelsel se enkodering \"%s\" word nie in hierdie weeergawe ondersteun nie"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+"Kon nie die lêer/wortelnaam \"%s\" na utf-8 (%s) verander nie. Die "
+"gebruikte lêerstelsel \"%s\" is verkeerd enkodeer of die lêernaam bevat "
+"ongeldige bytes."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+"Lêer/wortelnaam \"%s\" bevat gereserveerde unicode-waardes wat nie met die "
+"karakters ooreenkom nie."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Kon nie die wortel lees nie"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Kon nie stat nie"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "Besig om die %s te verwyder (sal weer byvoeg)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**waarskuwing** %s is 'n gedupliseerde torrent van %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**waarskuwing** %s bevat foute"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... suksesvol"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "besig om %s te verwyder"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "klaar gekontrolleer"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Kon %s nie lees nie"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+"Kon %s nie aflaai of oopmaak nie\n"
+"Probeer om die torrentlêer met 'n webblaaier af te laai."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s of nuwer vereis"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Te laat om RawServer agterstevoor om te ruil, %s is reeds gebruik"
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Spoorsnyer steeds nie volledig aangekondig %d sekondes nadat dit begin is nie"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Probleem om met spoorsnyer te verbind, gethostbyname het gefaal -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Probleem om met die spoorsnyer te verbind -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "Slegte data van die spoorsnyer -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "Verwerp deur die spoorsnyer -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+"Die torrent word gestaak, aangesien dit verwerp is deur die spoorsnyer omdat "
+"dit nie aan enige peers verbind is nie"
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Boodskap van die spoorsnyer:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "waarskuwing van die spoorsnyer -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Spoorsnyerlose opsoek het gefaal:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "slegte meta-info - nie 'n woordeboek nie"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "slegte meta-info - slegte dele sleutel"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "slegte meta-info - ontoelaatbare deellengte"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "slegte meta-info - slegte naam"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "naam %s nie toegelaat nie weens sekuriteitsredes"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "enkel/veelvuldige lêermengsel"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "slegte meta-info - slegte lengte"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "slegte meta-info - \"lêers\" is nie 'n lys van lêers nie"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "slegte meta-info - lêerinskrywing moet foutief wees"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "slegte meta-info - slegte roete"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "slegte meta-info - slegte roetewortel"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "roete %s nie toegelaat nie weens sekuriteitsredes"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "slegte meta-info - duplikaatroete"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"slegte meta-info - naam gebruik beide as 'n lêer en as 'n subwortelnaam"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "slegte meta-info - verkeerde objektipe"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "slegte meta-info - geen aangekongigde URL-string"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "slegte meta-info - die node is nie 'n lys nie"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "slegte meta-info - die nodelys kan slegs twee elemente bevat"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "slegte meta-info - nadegas moet 'n string wees"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "slegte meta-info - nodepoort moet 'n integraal wees"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "Rede vir faling moet 'n string wees"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "waarskuwingsboodskap moet 'n string wees"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr "ongeldige inskrywing in peerlys - peerinligting moet dict wees"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "ongeldige inskrywing in peerlys - peer-IP moet 'n string wees"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "ongeldige inskrywing in peerlys - peerpoort moet 'n integraal wees"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ongeldige inskrywing in peerlys - ongeldige peeridentiteit"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ongeldige peerlys"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "ongeldige aankondigingsinterval"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "ongeldige minimum aankondigingsinterval"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ongeldige spoorsnyeridentiteit"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ongeldige aantal peers"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ongeldige aantal sade"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ongeldige \"laaste\" inskrywing"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Gebruik: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+"[OPSIES] [TORRENTWORTEL]\n"
+"\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+"Indien 'n geen-opsie argument aanwesig is, word aangeneem dat die waarde\n"
+" van die torrent_wortel opsie.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPSIES] [TORRENTLêERS]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPSIES] [TORRENTLêER]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPSIE] SPOORSNYER_URL LêER [LêER]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumente is -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(outomatiese instellings na"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "onbekende sleutel"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parameter aan die einde ingesluit met geen waarde"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "bevelslyn kon nie ontleed word nie by"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Opsie %s word benodig"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Verskaf ten minste %d argumente"
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Te veel argumente - %d maksimum"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "verkeerde formaat van %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Poort om by te luister"
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "lêer om onlangse afgelaaide inligting in te stoor"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "afsnytyd om verbindings te sluit"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekondes tussen stoor van die dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "sekondes tussen die afgesnyde aflaaiers"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+"sekondes wat aflaaiers behoort te wag voordat hulle weer aangekondig word"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+"outomatiese aantal peers aan wie 'n inligtingsboodskap gestuur moet word as "
+"die kliënt nie n aantal aandui nie"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"tyd wat gewag moet word voordat gekyk word of enige verbindings verval het"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hoeveel keer gekyk moet word of 'n aflaaier agter 'n NAT is (0 = moenie kyk "
+"nie)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"Of inskrywings in die log gemaak moet word vir die kontrolering van NAT-"
+"resultate"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"minimum tyd wat kan verloop sedert die vorige volledige trekking voor die "
+"volgende"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"mimimum tyd wat kan verloop in sekondes voordat 'n kas as verouderd beskou "
+"word en uitgetrek word"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+"laat slegs aflaaiings van .torrents in hierdie wortel toe (en herhaaldelik "
+"in subwortels of wortels wat self geen .torrentlêers bevat nie). Indien so "
+"ingestel, moet torrents in hierdie wortel aangetoon word on die "
+"inligtingbladsy/skraap, ongeag of daar peers is of nie"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"Laat spesiale sleutels in torrents toe om die spoorsnyertoegang in die "
+"bestemde-wortel te beïnvloed"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "of die loglêer heropen moet word wanneer 'n HUP-sein ontvang word"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"of 'n inligtngbladsy vertoon moet word wanneer die spoorsnyer se basiswortel "
+"gelaai word"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "'n URL waarheen die inligtingsbladsy verwys kan word"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "Of die name van die toegelate URL verton moet word"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"Lêer wat x-ikoondata bevat moet teruggestuur word wanneer die webblaaier "
+"favicon.ico versoek"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"Ignoreer die IP GET parameter van rekenaars wat nie op plaaslike netwerk IPs "
+"is nie (0=nooit, 1=altyd, 2=ignoreer indien NAT-kontrolering nie aangestel "
+"is nie).HTTP instaanopskrifte wat die adres van die oorspronklike kliënt gee "
+"word dieselfde behandel as --IP."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"lêer waar spoorsnylogs neerskryf moet word, gebruik - vir stdout "
+"(outomatiese keuse)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+"gebruik met toegelate_wortel; voeg 'n /lêer?allegaartjie={hash} url wat "
+"gebruikers toelaat om die torrentlêer af te laai"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"behou dooie toorents nadat hulle verval het (sodat hulle vertoon sal word op "
+"u /skrap en webbladsy). Het slegs invloed indien toegelate_wortel nie "
+"vasgestel is nie"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "skraptoegang toegelaat (kan geen, spesifiek of volledig wees)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maksimim aantal peers wat met enige versoek aangedui kan word"
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+"u lêer bestaan moontlik elders in die heelal\n"
+", maar, helaas, nie hier nie\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**waarskuwing** gespesifiseerde favicon-lêer -- %s -- bestaan nie."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**waarskuwing** statefile %s korrup; besig met herinstelling"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# log is begin"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**waarskuwing** kon nie stdout herlei na loglêer nie:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log is weer oopgemaak:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**waarskuwing** kon nie loglêer weer oopmaak nie"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "spesifieke skrapfunksie nie beskikbaar met hierdie spoorsnyer nie"
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "volledige skrapfunksie nie beskikbaar met hierdie spoorsnyer nie"
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "kry-funksie nie beskikbaar met hierdie spoorsnyer nie."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Aangevraagde aflaaiing nie geoorloof by die gebruik van dié spoorsnyer nie."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "hardloop sonder argumente vir parameterverduidelikings"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Besig om af te skakel:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Kan nie twee aparte weergawes van dieselfde torrent begin nie"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Steek %s weg"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Wys %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "Nie 'n geldige engekoorde string nie"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "ongeldige bengekodeerde waarde (data na geldige voorvoegsel)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+"maksimumpoort kleiner as minimumpoort - geen poorte om te kontrolleer nie."
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Kon nie 'n luisterpoort oopmaak nie: %s"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Kon nie 'n luisterpoort oopmaak nie: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Gaan u poortreeksinstellings na."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Aanvanklike begin"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kon nie fastresume data laai nie: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Sal allegaartjie volledig nagaan."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "deel %d het allegaartjie-toets gefaal, besig om dit te herlaai"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Probeer om 'n spoorsnyerlose torrent met 'n spoorsnyerlose kliënt af te laai "
+"afgestel."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "aflaaiing het gefaal:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO-fout: Geen spasie beskikbaar op skyf nie, of kan nie so 'n groot lêer "
+"skep nie:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "doodgemaak deur IO-fout:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "doodgemaak deur gebruikstelselfout:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "doodgemaak deur interne uitsondering:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Addisionele fout wanneer toemaak weens 'n fout:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Kon nie fastresume-lêer verwyder na fout ingetree het nie:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "besig om te saai"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "kon nie fastresume-data skryf nie:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "sluit af"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Hierdie is klaarblyklik 'n ou weergawe van Python wat nie die vasstelling "
+"van die enkodasie van die lêerstelsel ondersteun nie. Neem aan dis 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python kon nie self vasstel watter enkodering vir die lêerstelsel gebruik is "
+"nie. Gebruik dus eerder 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"'%s' enkodering van lêerstelsel word nie ondersteun nie. Gebruik dus eerder "
+"'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Slegte lêerkomponent:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+"Hierdie. torrentlêer is met foutiewe gereedskap geskep en die lêername is "
+"foutiewelik enkodeer. Sommige of alle lêername mag moontlik anders lyk as "
+"wat die skepper van die .torrentlêer in gedagte gehad het."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+"Hierdie .torrentlêer is met foutiewe gereedskap geskep en bevat slegte "
+"karakterwaardes wat nie met enige ware karakters ooreenstem nie. Sommige of "
+"alle lêername mag anders lyk as wat die skepper van die .torrentlêer in "
+"gedagte gehad het."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+"Hierdie .torrentlêer is met foutiewe gereedskap geskep en bevat foutiewelik "
+"enkodeerde lêername. Die name wat gebruik is mag steeds korrek wees."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+"Die karakterstel wat op die plaaslike lêerstelsel gebruik word (\"%s\") kan "
+"nie al die karakters wat in die lêernaam(e) van die torrent gebruik is, "
+"weergee nie. Lêername is dus verander van die oorspronklikes. "
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Die Windows-lêerstelsel kan sommige van die karakters wat in die lêernaam(e) "
+"van de torrent geruik is, nie hanteer nie. Lêername is dus verander van die "
+"oorspronklikes."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+"Hierdie .torrentlêer is met foutiewe gereedskap geskep en bevat ten menste 1 "
+"lêer met 'n ongeldige lêer of wortel. Aangesien alle sodanige lêers egter 0 "
+"lank is, is hulle bloot geïgnoreer."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Onopgevolgde bevel: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kon nie hoofprop skep nie: word reeds gebruik"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Kon nie ou hoofpropnaam verwyder nie:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kon nie hoofprop skep nie:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Kon nie bevel stuur nie:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Globale mutex reeds gekep."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Kon nie 'n oop poort vind nie!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Kon nie programdatawortel skep nie!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Kon nie globale mutex-propslot vir hoofproplêer bekom nie!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"'n Vorige weergawe van BT is nie behoorlik skoongemaak nie. Gaan voort."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "'n Ander weergawe van BT loop reeds, maar \"%s\" bestaan nie.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Ek sal die poort raai."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Poort gevind: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Kon poort nie vind nie."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE-gesprek verbind."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "kon bedienerprop nie deregistreer of toemaak nie: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "Bedienerprop verloor"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Fout tydens hantering van die aanvaarde verbinding:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Moet toemaak weens die TCP-bundel wat skilfer. Sien asseblief die FAQ by %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "het onbekende boodskaptipe ontvang"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "tyd het uitgeloop"
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr "propfout"
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..741a37c
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,2886 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-11-08 11:39-0800\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s يعمل حالياً "
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "اسحب لإعادة التّرتيب"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "أنقر يمينًا للائحة البيانات"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "اتصال باستخدام المودم/خط الهاتف"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "دي أس أل (DSL) / كيبل بسرعة إرسال 128 كيلو"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "دي أس أل (DSL) / كيبل بسرعة إرسال 256 كيلو"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "دي أس أل (DSL) بسرعة إرسال 768 كيلو"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "ت1 (T1)"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "ت1\\إي1 (T1/E1)"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "إي1 (E1)"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "ت3 (T3)"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "أو سي 3 (OC3)"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "أدخل رابط التورنت"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "أدخل رابط ملف التورنت للفتح:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "الحد الاعلى للتحويل:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "إيقاف مؤقت لجميع ملفات التورنت "
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "إستئناف التّحميل"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "يوجد إصدار جديد %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "يوجد إصدار جديد من %s \n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "أنت تستخدم الإصدار %s، بينما الإصدارالجديد هو %s. \n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr "بإمكانك الحصول على الإصدار الجديد من n\\%s "
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "حمل _لاحقًا"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "حمل _الآن"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_ذكرنى لاحقًا"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "عن %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "تجريبية"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "%s الإصدار "
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s لايمكن فتح "
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "تبرع"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s سجل النشاط"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ":حفظ السجل في "
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "تم حفظ السجل"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "تم مسح السجل"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s اعدادات"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"نص شريط التحميل دائما أسود\n"
+"(يتطلب إعادة التشغيل)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "حفظ"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ": حفظ الملفات المحمله في "
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "... تغيير "
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "إسأل عن مكان حفظ كل مرة"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "التحميل مستمر"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "توزيع"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"وزع التورنت المكتملة: حتى تصل نسبة المشاركة إلى [_] مئوية،أو [_]دقيقةأيهما "
+"يتحقق أولاً"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "توزيع غير محدود"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "وزع آخر تورنت مكتملة: حتى تصل نسبةالمشاركة إلى [_] مئوية"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "الشبكة"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ": إبحث عن منفذ متوفر "
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ":بداية عند منفذ"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ": سيقوم الآي بي بتبليغ المتتبع"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"ليس لها تأثير إلا إذا كنت على\n"
+"نفس الشبكة المحلية للمتتبع"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"تحذير : تغير هذه الاعدادات قد \n"
+"من العمل بشكل جيد %s يمنع "
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "اختيار"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "قيمة"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "متقدم"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "اختر دليل الحفظ الإفتراضي"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "\"%s\" ملفات في "
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "لا تحمل أبداً"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "اسم الملف"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "الطول"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "\"%s\" الأنداد لـ "
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "عنوان الآي بي"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "العميل"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "اتصال"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "كيلو بت/ث تحميل"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "كيلو بت/ث نقل"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "ميجا بايت تم تحميلها"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "ميجابايت تم نقلها"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr " مكتمل %"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "كيلو بت/ ث سرعة التحميل التقديرية للند"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "هوية الند"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "مهتم"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "مزدحم"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "ممتص"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "تحميل متفائل"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "عن بعد"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "محلي"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "ند سيئ"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "جيد %d "
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr " سيئ %d"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "ممنوع"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "موافق"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "\"%s\" معلومات لـ "
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ":اسم التورنت "
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(تورنت غير متتبع)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ": عنوان الموقع الإعلان"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr "،في ملف واحد"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr "ملفات %d في "
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ":الحجم الكلي"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ":قطع"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ":معلومات الهاش "
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ":احفظ في"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ":اسم الملف"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "افتح الدليل_"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "معلومات عن التورنت"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "احذف التورنت"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "قم بإلغاء التورنت"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr "،%s ستوزع حتى "
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr "ستوزع بشكل غير محدود"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr " %d%% :تم التحميل بحمد الله، نسبة المشاركة "
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "تم نقلها %s ، تم التحميل بحمد الله "
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "تم بحمد الله"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "معلومات_التورنت"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "محتويات الملف_"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "قائمة الأنداد"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "غير الموقع_"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "توزيع غير محدود_"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "إعادة"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "إنهاء_"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "حذف_"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "قطع/إنهاء_"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "؟ \"%s\" هل أنت متأكد أنك تريد إزالة "
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "هي نسبة مشاركتك في هذا التورنت %d%% "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "لهذا التورنت %s لقد قمت بنقل "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "احذف هذا التورنت؟"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "تم بحمد الله"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "اسحب إلى القائمة للتوزيع"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "فشل"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "اسحب إلى القائمة للإستئناف"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "انتظار"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "إيقاف مؤقت"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "مستمر"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr " %s : النقل الحالي "
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "%s : التحميل الحالي "
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "%s : النقل السابق"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr " %s : التحميل السابق "
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "%0.02f%% : نسبة المشاركة "
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "ند %s يوجد موزع %s يوجد %s : المجموع من التراكر"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "%d : النسخ الموزعه %s : التالي "
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "الاجزاء: %d total, %d اكتمل , %d جزء, %d نشط (%d فارغ)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr " أجزاء متعطلة %d + في طلبات مرفوضة %s"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% تم %s والباقي"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "نسبة التحميل"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "نسبة النقل"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "غير موجود"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr " %s ابتدأ"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "خروج"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "افتح ملف تورنت_"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "افتح رابط تورنت"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "أنشئ ملف تورنت"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "إيقاف/تشغيل"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "أظهر/أخفي التورنت المكتملة"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "أعد قياس النافذة للمطابقة"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "سِجل"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "إعدادات"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "مساعدة"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "حول"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "ساهم"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "ملف"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "عرض"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "بحث عن تورنت"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(متوقف)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(متعدد)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "%s يتم تحميل ملف التنصيب لـ "
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "الجديد الآن؟ %s تنصيب الـ "
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "؟%s والقيام بتنصيب %s هل تريد الخروج من "
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr "موجودة في %s المساعدة التابعة لـ %sهل تريد الإنتقال إلى هناك؟"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "قم بزيارة صفحة المساعدة؟"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "يوجد تورنت واحد مكتمل في القائمة"
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "هل تريد حذفه؟"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "ملفات تورنت مكتملة في القائمة %d يوجد "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "هل تريد حذف الكل؟"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "حذف جميع التورنت المكتملة؟"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "لا يوجد أي تورنت مكتمل"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "لا يوجد تورنت مكتمل للحذف"
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ":افتح تورنت"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "غير موقع الحفظ لـ"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "!الملف موجود"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr " موجود مسبقاً \"%s\" هل تريد أن تختار اسم آخر للملف ؟"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "احفظ الموقع لـ"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "!المجلد موجود"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"موجود مسبقاً \"%s\"هل تريد انشاء مجلد جديد بنفس الإسم داخل المجلد الموجود "
+"مسبقاً ؟"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "%s :(رسالة عامة) "
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s خطأ"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "لقد حدثت عدة أخطاء اضغط موافق لرؤية سجل الأخطاء"
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "إيقاف التورنت المشتغلة؟"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "هل تبرعت ؟"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "اهلاً بك في الاصدار الجديد من %s . هل قمت بالتبرع ؟"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "شكراً !"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr "شكراً لتبرعك ، لتتبرع مرة اخرى . اختر من قائمة المساعدة زر التبرع ."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s المنشئ لملفات تورنت %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "اختر .."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "لاتوجد ملفات تورنت"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "يعمل بشكل طبيعي"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..af8b61d
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,2866 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-29 20:12+0200\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Инсталирайте Python %s или по-висока версия"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "остаряла версия, не използвайте"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Не може да се комуникира с друг %s процес, но един изглежда е стартиран"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Затварянето на всички %s прозорци може да реши проблема."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s е вече стартиран"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Не може да се комуникира с друг %s процес"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Изисква се PyGTK %s или по-нова версия"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "влачете с мишката, за да преподредите"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "натискане с десен бутон за извикване на менюто"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/кабел от 128k нагоре"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/кабел от 256k нагоре"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL от 768k нагоре"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "Т1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "Е1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "Т3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Въведете URL на торент файла"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Въведете URL на торент файла, за да го отворите"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Максимална скорост на качване:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Временно спиране на всички стартирани торенти"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Подновяване на свалянето"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Налична е по-нова %s версия"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Налична е нова версия на %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Вие използвате %s, а новата версия е %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Винаги можете да изтеглите последната версия от \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Изтегляне _по-късно"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Изтегляне _сега"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Напомняне по-късно"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Относно %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Бета"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Версия %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s не може да бъде отворен"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Дарение"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Дневник на действията"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Запазване на дневника в:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Дневникът е съхранен"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Дневникът е премахнат"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Настройки"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Основни"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Стартиране на BitTorrent при стартиране на Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Смаляване до икона в системната лента"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Текстът в лентата на прогреса винаги е черен\n(нужно е рестартиране)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Запазване"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Записване на новия изтеглен файл в:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Промяна..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Запитване всеки път къде да се запише сваления файл"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Изтегляне"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "При стартиране на нов торент:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Спрете някой стартиран торент, за да освободите място"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Не спирай други стартирани торенти"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Питай ме всеки път"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Сийдване"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Сийдване на готовите торенти: докато коефициентът на споделяне достигне [_] процента или за [_] минути, до изпълнение на едното от двете."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Неограничено сийдване"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Сийдване на последно завършения торент: докато коефициентът на споделяне достигне [_] процента."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Мрежа"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Проверка за наличен порт:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "започване от порт: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Активно автоматично назначение на порт "
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP, което да се съобщава на тракера:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Няма ефект, ако не сте в\n една и съща локална мрежа с тракера)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ВНИМАНИЕ: Промяната на тези настройки може\n да попречи на правилното функциониране на %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Опция"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Стойност"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Разширени настройки"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+"Избиране на директория по подразбиране за запазване на изтеглените файлове"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Не може да се премахне прекия път: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Файлове в \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Никога"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Никога не изтегляй"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Обичайно"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Свали по обичайния начин"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Първи"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Сваляне първи"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Име на файла"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Дължина"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Изтегляне"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "никога"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "първи"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Пиъри за \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP адрес"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Клиент"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Връзка"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "Скорост на сваляне KB/s "
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "Скорост на качване KB/s "
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB изтеглени"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB качени"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% свалени"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s очаквана скорост за теглене от пиъра"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Идентификация на пиъра"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Заинтересовани"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Забавени"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Спрени"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Оптимистичен вариант за качване"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "отдалечена"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "локална"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "лош пиър"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d са добре"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d са лоши"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "забранен"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "Добре"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Информация за \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Име на торент:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(торент без тракер)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Обявяване на url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", в един файл"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", в %d файла"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Големина:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Части:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Информация за hash-a:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Записване в:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Име на файл:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Отворяне на директория"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Покажи _списък с файловете"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Информация за торент"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Премахване на торент"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Отказване на торент"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", ще се сийдва за %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", ще се сийдва неограничено."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Файлът е свален, коефициент на споделяне:%d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Ъплоуднали сте %s на този торент. "
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Готово"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Информация за _торента"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Списък на файловете"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Списък на пиърите"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Променяна на местоположението"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Сийдване неограничено"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Ре_стартиране"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Завършване"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Премахване"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Прекратяване"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Искате ли да премахнете \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Вашият коефициент на споделяне за торента е %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Качени са %s от торента. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Премахване на торента?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Завършено"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "За сийдване, влачете и пуснете в списъка"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Грешка"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "За продължаване, влачете и пуснете в списъка"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Изчакване"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Пауза"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Стартирано"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Качени до момента: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Изтеглени до момента:%s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Предишно качени: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Предишно изтеглени: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Коефициент на споделяне:%0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s пиъри, %s сийдъри. Общо на тракера: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Разпространени копия: %d;Следват: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Части: %d общо, %d завършени, %d частично завършени, %d активни (%d празни)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d неправилни части + %s в отказани заявки"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% свалени, %s остават"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Скорост на сваляне"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Скорост на качване"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Няма наличнa"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s стартирани"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Изход"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "И_зход"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Отворяне на торент файл"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Отворяне на _URL на торент"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Създаване на _нов торент"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Пауза/Стартиране"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Показване/Скриване на _свалените торенти"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Преоразмеряване на прозореца до побиране всички файлове"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Записване на действията"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Настройки"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Помощ"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Относно"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Дарение"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Файл"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Преглед"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Търсене на торенти"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(спрян)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(многозадачен)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Инсталиращата програма за %s се сваля"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Инсталиране на %s?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Искате ли да излезете от %s и да инсталирате новата, %s, версия?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s помощ на \n%s\nИскате ли да отворите страницата?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Искате ли да посетите помощната страница?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Има един свален торент в списъка."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Искате ли да го премахнете?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Има %d свалени торенти. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Искате ли да ги премахнете?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Премахване на всички завършени торенти?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Няма завършени торенти"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Няма свалени торенти за премахване."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Отворяне на торент:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Промяна на мястото за запазване на"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Файлът съществува!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" вече съществува. Искате ли да изберете друго име за файла?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Място за запазване на"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Директорията съществува!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" съществува. Искате ли да създадете същата директория вътре в съществуващата?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(съобщение):%s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Грешка"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Възникнаха множество грешки. Натиснете ОК, за да видите списъка на грешките."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Искате ли да спрете стартирания торент?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Вие стартирате \"%s\". Искате ли някой друг пуснат торент да бъде спрян?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Направихте ли дарение?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Добре дошли в новата версия на %s. Направхите ли дарение?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Благодаря Ви!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Благодарим Ви за дарението! За да направите ново дарение, изберете \"Дарение\" от меню \"Помощ\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Грешка при стартиране на Торент опашките, вижте по-горе."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s създаване на торент файлове %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Създаване на торент файл за този файл/директория:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Избиране..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Директориите ще бъдат торенти с множество файлове)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Размер на частите:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Използване на _тракер:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Използване на _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Връзки (по избор):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Коментари:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Създаване"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Хост"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Порт"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Създаване на торенти..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Проверяване на размера на файловете..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Започване на сийдване"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "Създаване"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Приключено."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Торентът е създаден."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Грешка!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Грешка при създаване на торентите: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Изисква се GTK %s или по-нова версия"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d дни"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 ден %d часа"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d часа"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d минути"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d секунди"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 секунди"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Помощ"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Често задавани въпроси:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Стартиране"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Избиране на съществуваща папка..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Всички файлове"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Торенти"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Създаване на нова папка..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Избиране на файл"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Избиране на папка"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Грешка при зареждане на съхраненото състояние:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Грешка при съхраняване на статуса на ГПИ:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Невалидно съдържание на файла за състояние"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Възникна грешка при четене на файл \"%s\""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "Състоянието не може да бъде възстановено напълно"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Невалиден файл за състояние(дублиран)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "\"%s\" съдържа повредени данни, торентът не може да бъде възстановен."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(инфохеш несъвпадение)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Невалиден файл за състояние(грешно записан)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Грешка в файла за състояние на ГПИ"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Неподходяща версия на файла за състояние"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Неподдържана версия на ГПИ файла за състояние (създаден от по-нова версия на клиента?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Грешка при изтриване на кеширания %s файл:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Това не е валиден торент файл.(%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Този торент (или друг със същото съдържание) вече е стартиран."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Този торент (или друг със същото съдържание) изчаква да бъде стартиран."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Торент в непознато състояние %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Грешка при записване на файла"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "торентът няма да бъде рестартиран правилно при рестарт на клиента "
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Повече от %d торента не могат да бъдат стартирани заедно. За повече информация вижте Често задавани въпроси на %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Торентът не е стартиран, защото има други, които са в състояние на изчакване, а този е спрян съобразно зададените в настройките условия за спиране"
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Торентът не е стартиран, защото състоянието му отговаря на настройките за това кога да спре сийдването на последния завършен торент."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Грешка при изтегляне на новата версия от %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Грешка при разчитане на стринга за новата версия от %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Не може да бъде открито подходящо временно място, където да се запише инсталатора %s%s ."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Няма наличен торент файл за инсталатора %s%s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "Инсталаторът %s %s изглежда е непълен, липсващ или повреден"
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Инсталаторът не може да бъде стартиран на тази операционна система"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Няма торенти"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Стартиране на тегленето"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Нормален работен режим"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Тегленето може да бъде бавно:\n Вероятно има защитна стена(firewall)/NATted"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Проверете мрежовата връзка"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"Директория за съхранение на променящи се данни като информация за бързо подновяване и състояние на ГПИ. По подразбиране това е поддиректория \"данни\" от папката config на директорията bittorrent ."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"Кодиращата таблица, използвана от локалната файлова система. Ако няма посочена стойност, тя се открива автоматично. Автоматичното откриване не работи с версии на python по-ниски от 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Използване на ISO кодиране"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP за съобщаване до тракера (няма ефект, освен ако не сте в локалната мрежа на тракера)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"Номер на порт, който ще бъде видим, ако е различен от този, използван от вашия клиент."
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"Начален номер на порт за използване. Преминаване на следващия, ако този е недостъпен"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "Краен номер на порт за използване"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip за локална връзка"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "интервал в секунди за обновяване на информацията"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "минути за изчакване между заявките до нови пиъри"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "минимален брой на пиърите за свързване без заявка"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "Брой на пиърите, след който следва прекратяване на нови връзки"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "максимален брой изходящи, непълни връзки"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"максимално разрешен брой на връзките,след който нови връзки няма да бъдат приемани"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "Проверяване на хаш информацията"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "максимална скорост на качване kB/s, 0 се равнява на \"неограничено\""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "брой на качванията при максимално добри условия без прекъсване"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"максимален брой на едновременно отворените файлове в многофайлов торент, 0 се равнява на \"неограничено\". Използва се, за да се избегне изчерпване на файловите дескриптори."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Инициализиране на клиент без тракер. Опцията трябва да е включена, за да се теглят торенти без тракер."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"интервал, в секунди, след който се изпращат маркери за поддържане на сесията"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "брой байтове на заявка."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"Максимална дължина за кодиране на префикса, която ще бъде приета - по-големи стойности може да доведат до разпадане на връзката."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"Секунди за изчакване преди затваряне на сокетите, когато нищо не е получено."
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"Секунди на изчакване преди проверяване за време на връзка, което е пресрочено."
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"Максимална дължина на частите за изпращане на пиърите, прекъсване на връзката, ако заявката надвишава размера"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"Преизчисляване на информацията за качване и сваляне през зададения период от време"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"Преизчисляване на информацията за коефициента на споделяне през максимално зададения период от време"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"Максимален интервал от време за изчакване преди изпращане на повторен анонс към тракера"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"Секунди, които да се изчака да пристигнат данни, преди да се приеме че връзката временно се е разпаднала"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"Брой на сесиите за теглене, след които да се премине от \"случаен\" към \"първи най-рядък\" ред на обслужване"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "Брой байтове за едновременно записване в мрежовия буфер."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"Отказване на по-нататъшни връзки с пиъри, които умишлено или некоректно подават повредени данни."
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "Прекратяване на връзката с пиъри, които имат еднакъв IP адрес"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "Задаване на стойност за TOS опцията на връзката с пиъра, ако не е 0"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"Разрешаване преодоляване на бъг в BSD libc, който води до много бавно четене на файла."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "адрес на HTTP прокси, който да се използва за връзка с тракера"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "затваряне на връзките с RST и избягване на състоянието TCP TIME_WAIT "
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Използване на мрежови библиотеки от тип \"Twisted\" за връзка с мрежата. 1 означава използване, 0 означава да не се използват, -1 означава автоматично откриване с предпочитане на такива библиотеки"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"Име на файл (за торенти с един файл)или име на директория (за торенти с много файлове), което да се използва за записване на файловете, игнорирайки информацията в торента. Виж също--запази_в, ако не е посочено, потребителят ще бъде запитан за място на запазване"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "показване на разширен потребителски интерфейс"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"Максимално време в минути, за което завършените торенти да бъдат сийдвани, преди да бъдат спрени."
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"минимална стойност в проценти, до която да достигне коефициента на качване/сваляне, преди преустановяване на сийдването. 0 е равносилно на безкрайност."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"минимална стойност в проценти, до която да достигне коефициента на качване/сваляне, преди преустановяване на сийдването на последния свален торент. 0 е равносилно на безкрайност."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Сийдване на всички готови торенти неограничено (до прекъсване от потребителя)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Сийдване на последния завършен торент (до прекъсване от потребителя)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "Старирай програмата за сваляне в режим \"пауза\""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"Уточняване на действията на програмата, когато потребителят стартира ръчно друг торент: \"заместване\" означава да се стартира новият торент на мястото на стария, \"добавяне\" - да добави новия торент паралелно с другите, \"запитване\" - питане на потребителя всеки път."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Стартиране на BitTorrent в минимизиран вид"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"Презапиши информацията за версия, дадена от http проверката, и разреши режим за отстраняване на грешки"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"презапиши моментната версия използвана в \"проверка на версията\" и разреши режим на дебъгване на проверката на версията"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"задай големината и позицията на прозореца във формат: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"име на файл (за торенти с един файл) или име на директория (за торенти с много файлове) за запазване на торента, като се игнорира информацията от торента. Вижте също --записване_в"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"Задаване на максимален брой на позволените сесии за теглене наведнъж. -1 означава брой, базиран на максималната скорост на качване. Автоматичните стойности са валидни само когато е стартиран един единствен торент."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"локална директория, в която ще се запазва съдържанието на торента. Файлът (при торентите с един файл) или директорията(торенти с много файлове) ще бъдат създадени вътре в тази директория, като се използва името по подразбиране от торента. Виж също--запис_като."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "Запитване за мястото на записване на файловете "
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"Локална директория, където торентите ще се записват, с използвана на имената, определени от стила запис_като. Ако полето остане празно, файловете ще се запазват в директорията на съответния торент файл. "
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+"Задаване на интервал в секунди през който да се проверява директорията с торенти"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"Изчакайите няколко секунди, преди да обявите торента и да го стартирате, за да избегнете сблъсък с тракера"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Как да се наименуват теглените торенти: 1:използване на името на торент файла (тире .торент); 2:използване на името, кодирано в торент файла; 3:създаване на директория с името на торент файла (тире .торент) и съхраняване в тази папка под име, кодирано В торент файла; 4:използване на това име (стил 1/2), ако името на торент файла (тире .торент) и името, кодирано В торент файла, са идентични, в противен случай създаване на междинна директория като в стил 3; ВНИМАНИЕ: стил 1 и 2 могат да презаписват файловете без предупреждение."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"Изписване на целия път до торент файла или на съдържанието на всеки торент"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "Директория за търсене на .торент файлове."
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "Извеждане на диагностична информация в stdout "
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "В какви единици да се показват размерите на парчетата"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "име на тракера по подразбиране "
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"ако е неуспешен, създай торент без тракер вместо да посочваш URL, използвай надежден мрежов възел под формата на <ip>:<порт> или празен стринг, за да извлечеш възел от таблицата с маршрути "
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "Тегленето е завършено!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<неизвестен>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "Завършено след %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "тегленето е завършено успешно"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo(%.1f MB качени / %.1f MB свалени)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f(%.1f MB качени / %.1f MB свалени)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d са видими, плюс %d разпространявани копия (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d копия са разпространени (следват: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d са видими"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ГРЕШКА:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "запазване:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "размер на файл:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "завършени проценти:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "оставащо време:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "изтегляне в:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "скорост на сваляне:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "скорост на качване:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "коефициент на споделяне:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "статус на сийдване:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "статус на пиърите:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Не можете да посочвате заедно --запис_като и --запис_в"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "изключване"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Грешка при четене на конфигурационния файл:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Грешка при четене на .торент файл:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "трябва да посочите .торент файл"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Грешка при инициализиране на текстовия режим на графичния интерфейс, операцията не може да продължи."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Този интерфейс за теглене изисква стандартен модул Python \"curses\", който за жалост не е в наличност при Windows версията на Python. Той обаче е наличен за Cygwin версиите на Python, и се стартира под всички Win32 платформи.(www.cygwin.com)"
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Можете да ползвате \"bittorrent-console\", за да теглите."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "файл:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "размер:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "местоназначение:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "прогрес:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "статус:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "скорост на сваляне:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "скорост на качване:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "споделяне:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "сийдвания:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "пиъри:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d са видими,плюс %d разпространени копия(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "грешка(и):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "грешка:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP скорост за качване и теглене"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "изтегляне на %d части,има %d части,%d от %d са свалени "
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Грешки при изпълнение:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Използване:%s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "стар анонс за %s:%s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "няма торенти"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "СИСТЕМНА ГРЕШКА"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Внимание:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "не е директория"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "грешка: %s\nстартирайте без настройка на параметри"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nИЗКЛЮЧЕНИЕ:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Все още можете да използвате \"btdownloadheadless.py\" за теглене."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "свързване с пиъри"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA в %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Размер"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Качване"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Общо:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s пиъри %s сийдъри %s копия - %s изтегл. %s качено"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "грешка:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nстартирайте без настройка на параметри"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "незадължителен коментар, който да се постави в .торент файла"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "избираем от потребителя файл за торент"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - разкодиране на %s metainfo файлове"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Използвани:%s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "файл с метаданни: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "инфо хеш:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "име на файл: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "файл размер:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "файлове:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "име на папка: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "размер на архив:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url на тракера за анонс : %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "връзки без тракер:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "коментар:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Пн"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Вт"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Ср"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Чт"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Пт"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Сб"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Нд"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Януари"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Февруари"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Март"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Април"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Май"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Юни"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Юли"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Август"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Септември"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Октомври"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Ноември"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Декември"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Компресиран: %i Некомпресиран: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Грешка при записване на опциите:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Грешка при четене на конфигуриращия файл. Старият файл е съхранен в \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Несъвпадение в опциите за конфигурация:'%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Трябва да излезете от %s и да я инсталирате отново.(%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Грешка при търсене на файл с превод за език \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Файлът %s принадлежи на друг вече стартиран торент"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Файлът %s вече съществува, но не е стандартен файл"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Скъсяване на имената на файловете за по-лесно четене?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Форматът на файла не позволява бързо подновяване, може би е от друга версия на програмата?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Възможно е друга програма да е преместила, преименувала или изтрила файла, или е възможно %s да не е успяла да стартира успешно последния път"
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Възможно е друга програма да е променила файла или е възможно %s да не е успяла да стартира успешно последния път"
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Възможно е друга програма да е променила размера на файла или е възможно %s да не е успяла да стартира успешно последния път"
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Грешка при четене на данните необходими за бързо подновяване"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "Връзката бе отказана"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Опитвате се да изключите повторното използване при връзка, но това не може да се направи"
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"listen_forever() трябва да бъде извиквана само веднъж за дадено действие"
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() е възможно да не върне резултат докато има изпълняване на някакво действие и може да не обработи това, което искате. Използвайте listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Грешни данни във файла за отговор - размерът е твърде малък"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "Грешни данни в файла за отговор - размерът е твърде голям"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "проверяване на файла"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--проверка_hash 0 или информацията за бързо подновяване не съвпада със състоянието на файла (липсващи данни)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Грешна информация за бързо подновяване (файловете съдържат повече от обявените данни)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Грешна информация за бързо подновяване (грешна стойност)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"данните на диска са повредени - може би има две стартирани работещи копия на програмата?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"Файлът е свален при стартирането, но проверката за цялостта му се провали"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Грешка при настройването на обработката на сигнали:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "изгубени \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "добавени \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "изчакване за hash проверка"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "сваляне"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Препрочитане на конфигурационния файл"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Не е възможно да задавате име на .torrent файла когато използвате многозадачен режим за създаване на торенти"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Кодирането в файлова система \"%s\" не се поддържа от тази версия"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Грешка при обръщане на името на файла/директорията \"%s\" във формат utf-8 (%s). Или файловата система \"%s\" е неправилно разпозната или името на файла съдържа непозволени символи."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Името на файла/директорията \"%s\" съдържа запазени универсални стойности които нямат съответстващи символи."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Грешка при четене на данните от директорията"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Грешка при записване на статистиката"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "премахване на %s (ще се добави отново)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**Внимание** %s е същия торент като %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**Внимание** %s съдържа грешки"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "...успешно"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "изтриване на %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "проверката е завършена"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Грешка при четене на %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Грешка при изтегляне или отваряне на \n%s\nОпитайте да използвате Уеб Браузър за да свалите торент файла."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Нужен е Python %s или по-нова версия"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Вече не може да се използва RawServer, %s вече се използва"
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"%d секунди след стартирането му анонсът от тракера все още не е завършен"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Проблем при свързване с тракера, получи-хоста-по-име се провали -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Проблем при свързване с тракера -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "Грешни данни от тракера -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "отхвърлен от тракера -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Торента беше спрян понеже беше отхвърлен от тракера и нямаше връзка с нито един пиър."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Съобщение от тракера:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "предупреждение от тракера -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Търсенето на връзка без тракер се провали:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "Лоша мета-информация - не е речник"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "Лоша мета-информация - неправилни парчета"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "Лоша мета-информация - неправлина дължина на парчетата"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "Лоша мета-информация - неправилно име"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "Името %s е забранено по причини за сигурност"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "единичен/многотомен файл"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "Лоша мета-информация - неправилна дължина на файла"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "Лоша мета-информация - \"files\"не е списък с файлове"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "Лоша мета-информация - името на файла трябва да е речниково"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "Лоша мета-информация - неправилен път"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "Лоша мета-информация - неправилен път до директория"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "пътят %s е забранен по причини за сигурност"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "Лоша мета-информация - повтарящ се път"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "Лоша мета-информация - файлът и поддиректорията са с едно и също име"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "Лоша мета-информация - грешен тип на обекта"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "Лоша мета-информация - липсва информация за URL анонс"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "Лоша мета-информация - свързването не е списък"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "Лоша мета-информация - свързващия списък трябва да има два елемента"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "Лоша мета-информация - свръзващият хост трябва да бъде символен низ"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "Лоша мета-информация - свързващия порт трябва да е цяло число"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "Причината за грешката най-вероятно е неправилен низ"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "Предупредителното съобщение трябва да е символен низ"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"Грешна информация в списъка на пиърите - информацията за пиърите трябва да бъде речникова"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"Грешна информация в списъка на пиърите - IP на пиърите трябва да бъде низ"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"Грешна информация в списъка на пиърите - номера на порта на пиъра трябва да бъде цяло число"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "Грешна информация в списъка на пиърите - неправилно ID на пиъра"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "Грешен списък с пиъри"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "Невалиден интервал за анонс"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "Невалиден минимален интервал за анонс"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "невалидно id на тракера"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "Невалиден брой на пиърите"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "Невалиден брой на сийдърите"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "Последното \"въвеждане\" е невалидно"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Използване: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[НАСТРОЙКИ][ДИРЕКТОРИЯ С ТОРЕНТИ]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Ако не бъде зададен специално аргумент той се взима от стойността\n на избора на _директория с торент файлове.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[НАСТРОЙКИ][ТОРЕНТ ФАЙЛОВЕ]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[НАСТРОЙКИ][ТОРЕНТ ФАЙЛ]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[НАСТРОЙКИ] ТРАКЕР_URL ФАЙЛ [ФАЙЛ]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "аргументите са -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(по подразбиране)"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "непознат ключ"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "параметърът подаден в края е без стойност"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "Грешка при разчитането на командните редове "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Настройката %s се изисква."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Трябва да зададете минимум %d аргумента."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Твърде много аргументи - %d максимално."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "Грешен формат на %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Порт за използване."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "Файл за съхраняване на информацията от текущото сваляне"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "време за изчакване преди затваряне на връзката"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "интервал секунди между всяко запаметяване на сваления файл"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "секунди за изчакване преди свалянето да се счита за изтекло"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "секунди които трябва да изчакат между две реанонсирания"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"брой на пиърите по подразбиране до които да се изпрати съобщение с информация в случаи че програмата не го зададе сама"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "време за изчакване преди да се провери дали връзката не се е провалила"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"Проверяване дали свалящият е зад NAT протокол (0=не проверявай) "
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "Добавяне на данни за резултатите от nat-проверката в бележките"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"Минимално време, което трябва да измине от последното прочистване на паметта, за да бъде извършено ново"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"минимално време в секунди преди кешът да бъде счетен за стар и да бъде прочистен"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"Позволяване на сваляния на торенти само в тази директория (и съответно в поддиректории на тази които не съдържат торент файлове).Ако е включена тази опция, торентите в тази директория се показват на инфостраницата/scrape дали имат или нямат пиъри"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"позволяване специални редове в торент файла в позволената_директория да влияят на достъпа до тракера"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "Отваряне отново на файла с бележките при получаване на HUP сигнал"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"Изписване на съобщение когато главната директория на тракера е заредена"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "URL към което да се пренасочва инфо страницата"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "Показване на имена от позволената директория"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"Посочване на файл съдържащ x-icon данни който да бъде подаден когато браузъра изисква favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"Игнориране на параметъра ip GET на машини който не са с IP от локалната мрежа (0=никога,1=винаги,2=само ако NAT проверката е изключена).HTTPproxy който подават адрес на оригиналния клиент се управляват по същия начин като --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"файл за записване на бележки от тракера, за stdout - use (по подразбиране) "
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"използване с позволените_директории; добавя /file?hash={hash} url което позволява на потребителите да свалят торент файла"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"запази неактивните торенти след като срокът им изтече (така те ще бъдат показвани на вашия /scrape и уеб страница). Има смисъл когато няма настройка на позволени_директории"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+"Позволение за достъп до scrape (може да бъде пълен, специален или забранен)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "максимален брой на пиърите на които да се уважи искането за свързване "
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr "Файлът ви сигурно съществува някъде из вселената\nно уви, не и тук\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**Внимание** посоченият favicon файл -- %s -- не съществува."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**Внимание** файлът за състоянието %s е повреден; започване отново"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Записване на бележки:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**Внимание** грешка при пренасочване на stdout към файл с бележки:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Записване на бележки подновено:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**Внимание** грешка при повторно отваряне на файла с бележките"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "тази специфична scrape функция не се поддържа от този тракер"
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "пълно функциониране на scrape не е възможно на този тракер"
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "Функцията get не е възможна на този тракер"
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Свалянето, което желаете да извършите не е позволено за използване на този тракер."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "стартиране без аргументи разясняващи параметрите"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Изключване:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Грешка при стартиране на две отделни части от един торент"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Скриване %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Показване %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "Неправилно кодиран низ"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "Неправилно кодирана стойност (данни след правилна представка)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+"максималният порт за проверка е по-малък от минималния - няма портове за проверка"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Грешка при отваряне на порт за използване:%s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Грешка при отваряне на порт за използване:%s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Проверете настройките си за обхвата от портове за използване."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Първоначално стартиране"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Грешка при зареждане на файла за бързо стартиране:%s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Извършване на пълна проверка на hash."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "Парчето %d лисваше при hash проверката, сваляне наново"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Изтеглянето на торент без тракер с програмата за сваляне без тракер е забранено."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "Грешка при сваляне:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr "IO грешка:Няма място на диска, или не може да създаде файл с големина:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "Спиране поради IO грешка:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "Спиране поради OS грешка:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "Спиране поради вътрешна грешка:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Допълнителна грешка при затварянето поради възникнала грешка:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Грешка при премахване на файла за бързо подновяване:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "сийдване"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Грешка при записване на данните за бързо подновяване:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "изключване"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Това трябва да е стара версия на Python която не е приспособена да разпознава кодирането на файловата система. Приемане че кодирането е 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python не успя да разпознае кодирането на файловата система. Използване на 'ascii' вместо него."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Кодирането '%s' на файловата система не се поддържа. Използвам 'ascii' вместо него."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Грешно указана пътека във файла:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Този торент файл е създаден с повреден инструмент и е с некоректно кодиране на имената на файловете. Някои или всички имена на файловете може да се различават от оригиналните."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Този торент файл е създаден с повреден инструмент и е с неправилно кодиране на стойностите на символите.Някои или всички имена на файловете може да се различават от първоначалните, включени във файла."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Този торент файл е създаден с повреден инструмент и е с неправилно кодиране на имената на файловете. Използваните имена ,обаче, може да са коректни."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Набора от символи използван в местната файлова система (\"%s\") не може да изобрази всички символи използвани в името на файла на този торент. Имената на файловете са променени от първоначалните."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Файловата система на Windows не може да разчете някой символи използвани в имената на файловете на този торент. Имената на файловете са променени от оригиналните."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Този торент файл е създаден с повреден инструмент и съдържа файл или директория с невалидно име. Всички такива файлове са маркирани с дължина 0 и ще бъдат пропускани."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Грешна команда: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Грешка при създаване на сокет за контрол: сокетът вече се използва"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Грешка при премахване на старото име на файла на сокета за контрол: "
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Грешка при създаване на сокет за контрол:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Грешка при изпращане на команда:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Глобалния mutex вече е създаден."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Грешка при търсене на отворен порт!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Грешка при създаване на директория за данни на програмата!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Грешка при търсене на глобалния mutex lock за файла за контрол на сокета!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Предишна версия на BT не е била нормално затворена. Продължаване напред."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Друг интерфейс на BT е стартиран, но \"%s\" не съществува.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Разпознаване на порта."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Порта е открит: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Грешка при откриване на порт."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC Статус: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Отворен DDE разговор "
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "Грешка при отрегистрирането или затварянето на сокета на сървера:%s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "Сокета на сървера е изгубен"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Грешка при действие с осъществената връзка:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Непълен TCP стек наложи изходът на програмата. Моля погледнете ЧЗВ на адрес %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "Получаване на неизвестен тип съобщение"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "времето е просрочено"
+
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 0000000..f1dd7e8
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,2880 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-06 11:19-0800\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instalirajte Python %s ili veci"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "Neodobren, nemojte koristiti"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Nije uspjela komunikacija sa drugim %s procesom ali cini se da je jedan u "
+"toku."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Zatvaranje svih %s prozora bi moglo rijesiti problem."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s je vec pokrenut"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Nije uspjela komunikacija sa drugim %s procesom."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s ili noviji je potreban."
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "Povuci za ponovno narucivanje."
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Desni klik za meni."
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k up"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k up"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k up"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Ukucajte adresu torrenta"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Ukucajte adresu torent fajla za otvaranje:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksimalna brzina uploada:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Privremeno prekida sve tekuce torrente"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Nastavi downloadanje"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova %s verzija je dostupna."
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Nova %s verzija je dostupna.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Vi koristite %s, a nova verzija je %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Uvijek mozete dobiti zadnju verziju sa \n"
+" %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Downloadovati_kasnije"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Downloadovati_sada"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Podsjeti me kasnije"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "O %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Verzija %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Nisam mogao otvoriti %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donirajte"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Log aktivacije"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Snimi log u:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Log snimljen"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Log izbrisan"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s podesavanja"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Generalno"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..44adb31
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,2886 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 17:39-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instal·leu Python %s o superior"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "obsolet, no ho utilitzeu"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Ha fallat la comunicació amb un altre procés %s, malgrat sembla que n'hi ha un en execució."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+"Si tanqueu totes les finestres del %s pot ser que es resolgui el problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s ja es troba actiu"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Ha fallat la comunicació amb un altre procés %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Es requereix PyGTK %s o superior"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "cal arrossegar-los per reordenar-los"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "feu clic amb el botó dret per a accedir al menú"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "marcatge directe"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL o cable amb 128k de pujada"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL o cable amb 256k de pujada"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL amb 768k de pujada"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introduïu l'URL del torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introduïu l'URL del fitxer torrent a obrir:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Velocitat màxima de pujada:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Atura temporalment tots els torrents en marxa"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Continua la descàrrega"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Hi ha disponible una nova versió de %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Hi ha disponible una versió més recent de %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Esteu utilitzant la %s, i la versió nova és la %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Sempre podeu descarregar la darrera versió des de \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Descarrega-la _més tard"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Descarrega-la _ara"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Recorda-m'ho més tard"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Quant a %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versió %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "No s'ha pogut obrir %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Feu un donatiu"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Registre d'activitat de %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Desa el registre a:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "s'ha desat el registre"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "s'ha esborrat el registre"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Configuració de %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "General"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Llença el BitTorrent en iniciar Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimitza a la safata del sistema"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Text de la barra de progrés sempre en negre\n(requereix reiniciar)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Desaments"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Desa les descàrregues noves a:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Canvia..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Demana'm on vull desar cada descàrrega nova"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Descàrregues"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "En iniciar un nou torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Atura un altre torrent en funcionament per a fer-li lloc"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_No aturis altres torrents en funcionament"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Demana-m'ho cada vegada"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Llavors"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Sembra els torrents completats: fins que la ràtio de compartició arribi a [_] per cent o durant [_] minuts, la primera que s'acompleixi."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Sembra indefinidament"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Sembra l'últim torrent completat: fins que la ràtio de compartició arribi a [_] per cent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Xarxa"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Cerca un port disponible:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "començant pel port:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Habilita assignació automàtica de ports"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP que es comunicarà al rastrejador:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(No té cap efecte si no és que us trobeu\na la mateixa xarxa local que el rastrejador.)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"AVÍS: La modificació d'aquests paràmetres pot fer \nque el %s no funcioni correctament."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opció"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Opcions avançades"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Trieu el directori per defecte per a les descàrregues"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "No s'ha pogut eliminar la drecera: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Fitxers a \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Mai"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "No descarreguis mai"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Descarrega normalment"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primer"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Descarrega primer"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nom del fitxer"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Llargada"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Descàrrega"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "mai"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primer"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Usuaris per a \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Adreça IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Connexió"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s de baixada"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s de pujada"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB descarregats"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB pujats"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completat"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s aprox. de baixada de l'usuari"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Identificador de l'usuari"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessat"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Ofegat"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Rebutjat"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Pujada optimista"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remot"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "usuari no vàlid"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d correcte"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d incorrecte"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "expulsat"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "correcte"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informació de \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nom del torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sense rastrejador)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL de publicació"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en un fitxer"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", en %d fitxers"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Mida total:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Peces:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Resum d'informació:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Desa-ho a:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nom del fitxer:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Obre el directori"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostra la llista de _fitxers"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informació del torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Elimina el torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Cancel·la el torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", s'escamparà durant %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", s'escamparà indefinidament."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Fet. Compartició: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Fet. %s pujats"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Fet"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informació del torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Llista de _fitxers"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Llista d'usuaris"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Canvia la ubicació"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Sembra indefinidament"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_Torna a començar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finalitza"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Elimina"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Cancel·la"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Esteu segur que voleu eliminar \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "La vostra ràtio de compartició d'aquest torrent és del %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Heu pujat %s a aquest torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Voleu eliminar aquest torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Finalitzat"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "arrossegueu-lo cap a la llista per a escampar-lo"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Ha fallat"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "arrossegueu-lo cap a la llista per a continuar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "En espera"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "En pausa"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "En marxa"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Vel. de pujada actual: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Vel de baixada actual: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Vel. de pujada anterior: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Vel. de baixada anterior: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Ràtio de compartició: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s usuaris, %s llavors. Total del rastrejador: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Còpies distribuïdes: %d; Següent: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Peces: %d en total, %d completes, %d parcials, %d actives (%d buides)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d peces dolentes + %s en peticions rebutjades"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% fet, manquen %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Velocitat de descàrrega"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Velocitat de pujada"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "No disponible"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s començat"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Surt"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Surt"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Obre un fitxer de torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Obre un _URL de torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Crea un _nou torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/Engega"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostra/Amaga els torrents _finalitzats"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Redimensiona la finestra perquè encaixi"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Registre"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Configuració"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Quant a"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Feu un donatiu"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fitxer"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Visualitza"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Cerca torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(aturat)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(múltiple)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Ja s'està descarregant l'instal·lador %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Voleu instal·lar el nou %s ara mateix?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Voleu sortir de %s i instal·lar la nova versió, %s, ara?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "L'ajuda per a %s es troba a\n%s\nVoleu anar-hi ara?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Voleu visitar la pàgina web d'ajuda?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Hi ha un torrent a la llista que ja ha finalitzat."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Voleu eliminar-lo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Hi ha %d torrents a la llista que ja han finalitzat."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Voleu eliminar-los tots?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Voleu treure tots els torrents finalitzats de la llista?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "No hi ha cap torrent que hagi finalitzat."
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "No hi ha cap torrent finalitzat a eliminar."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Obre el torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Canvia la ubicació de desament per"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "El fitxer ja existeix"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" ja existeix. Voleu triar un altre nom per al fitxer?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Desa la ubicació per a"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "El directori ja existeix"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" ja existeix. Voleu crear un directori idèntic a dins del directori existent?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(missatge global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Error %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"S'han produït molts errors. Feu clic a D'acord per a veure el registre d'errors."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Voleu aturar el torrent actiu?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Ara iniciareu \"%s\". Voleu aturar també un altre torrent en funcionament?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Heu fet ja un donatiu?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Benvingut/da a la nova versió del %s. Heu fet ja el vostre donatiu?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Moltes gràcies!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Moltes gràcies per la vostra donació. Per a tornar a fer un donatiu, seleccioneu \"Feu un donatiu\" al menú \"Ajuda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "No s'ha pogut iniciar el TorrentQueue. Vegeu els errors més amunt."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "Creador de fitxers torrent %s %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Crea un fitxer torrent per a aquest fitxer o directori:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Tria..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Els directoris es convertiran en torrents per lots)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Mida de la peça:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Utiliza un ras_trejador:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Utilitza una _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nodes (opcional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Observacions:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Construcció"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Ordinador central"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "S'estan muntant els torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "S'estan comprovant les mides dels fitxers..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Inicia la sembra"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "s'està muntant"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Fet."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Ja s'han muntat els torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Error"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "S'ha produït un error en muntar els torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Es requereix GTK %s o superior"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dies"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dia i %d hores"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d hores"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuts"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d segons"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 segons"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Ajuda del %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Preguntes Més Freqüents"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Vés"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Tria una carpeta existent..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Tots els fitxers"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Crea una nova carpeta..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Seleccioneu un fitxer"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Seleccioneu una carpeta"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "No s'ha pogut carregar l'estat desat:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "No s'ha pogut desar l'estat de la interfície:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "El contingut del fitxer d'estat no és vàlid"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "S'ha produït un error en llegir el fitxer \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "no s'ha pogut restaurar per complet l'estat"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "El fitxer d'estat no és vàlid (hi ha una entrada repetida)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "S'han trobat dades corruptes a \"%s\". El torrent no es pot restaurar."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(resums d'informació no coincidents)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "El fitxer d'estat no és vàlid (hi ha una entrada no vàlida)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "El fitxer d'estat de la interfície no és vàlid"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "La versió del fitxer d'estat de la interfície és incorrecta"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"La versió del fitxer d'estat de la interfície no és compatible (potser pertany a una versió més recent del client?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "No s'ha pogut esborrar el fitxer %s de la memòria cau:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Aquest no és un fitxer torrent vàlid. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Aquest torrent (o un amb el mateix contingut) ja està en funcionament."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Aquest torrent (o un amb el mateix contingut) ja es troba en espera."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "El torrent es troba en l'estat desconegut %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "No s'ha pogut escriure en el fitxer"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "el torrent no es reiniciarà correctament quan es reiniciï el client"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"No es poden tenir en marxa més de %d torrents a la vegada. Per a més informació llegiu les Preguntes Més Frequents a %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"No s'ha iniciat el torrent ja que hi ha altres torrents en espera i aquest ja ha arribat al valor indicat per a deixar d'escampar-se."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"No s'ha iniciat el torrent perquè ja ha arribat al valor indicat per a deixar d'escampar l'últim torrent completat."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "No s'ha pogut obtenir la darrera versió des de %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "No s'ha pogut processar la cadena de la nova versió des de %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"No s'ha pogut trobar una ubicació temporal adequada on desar l'instal·lador %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "No hi ha cap fitxer torrent disponible per a l'instal·lador %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "L'instal·lador del %s %s sembla ser incomplet, inexistent o corrupte."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "No es pot arrencar l'instal·lador en aquest sistema operatiu."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Cap torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "S'està iniciant la descàrrega"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Funcionament normal"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Les descàrregues poden ser lentes:\nProbablement sou darrere un tallafoc o empreu NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Comprova la connexió de xarxa"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"directori on es desen dades de variables, tals com la informació sobre el fastresume i l'estat de la interfície gràfica d'usuari. El directori per defecte és el subdirectori \"data\" del directori de configuració del BitTorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codificació de caràcters utilitzada en el sistema de fitxers local. Si es deixa buit, s'intentarà detectar automàticament. La detecció automàtica no funciona amb versions de Python anteriors a la 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Codi d'idioma ISO a utilitzar"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP a comunicar al rastrejador (no té cap efecte si no ys trobeu a la mateixa xarxa local que el rastrejador)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"número de port visible per tothom si és diferent del port que el client escolta localment"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"número de port mínim a on escoltar. Si no està disponible es puja al següent"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "número de port màxim a on escoltar"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP a la qual s'ha d'enllaçar localment"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "temps en segons entre actualitzacions de la informació que es mostra"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minuts a esperar entre les peticions de més usuaris"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "nombre mínim d'usuaris per a no fer una nova petició"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"nombre d'usuaris a partir del qual es deixaran d'iniciar noves connexions"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "nombre màxim de connexions de sortida incompletes"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"nombre màxim de connexions permeses, a partir del qual es tancarà qualsevol altra connexió d'entrada immediatament"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "comprovar els resums (hash) en el disc"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "Vel. màxima permesa de pujada en kB/s. Un 0 indica sense límit."
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "el nombre de pujades per a omplir amb desbloquejos optimistes"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"el màxim nombre de fitxers en un torrent múltiple que es poden mantenir oberts a la vegada; introduïu un 0 si no voleu un límit. S'utilitza per aevitar quedar-se sense descriptors de fitxer."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicia un client sense rastrejador. Ha d'estar activat per tal que es puguin descarregar torrents sense rastrejador."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "nombre de segons entre cada senyal keepalive"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "quants bytes demanar en cada petició."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"longitud màxima del prefix de codificació que acceptareu a la vostra línia. Qualsevol valor més gran farà que es cancel·li la connexió."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "segons d'espera entre el tancament de sòcols que no han rebut res"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "segons d'espera entre comprovacions de si la connexió ha caducat"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"longitud màxima de la peça a enviar als usuaris. Es tancarà la connexió si es rep una petició més gran."
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"màxim interval de temps sobre el qual s'estimaran les velocitats actuals de pujada i baixada"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"màxim interval de temps sobre el qual s'estimarà la velocitat actual de sembra"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"temps màxim d'espera entre missatges de reintent si aquests fallen un cop rere l'altre"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"segons d'espera perquè les dades entrin a través d'una connexió abans d'arribar a la conclusió que la connexió es troba ofegada semipermanentment"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"nombre de descàrregues a partir del qual es passarà d'un sistema aleatori a un sistema d'escollir primer les que tenen menys presència"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+"nombre de bytes a escriure d'un cop en les memòries intermèdies de xarxa."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"rebutja més connexions d'adreces d'usuaris que envien dades incorrectes, per problemes o per mala intenció"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "no connectar-se a varis usuaris que tinguin la mateixa adreça IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"si és diferent de zero, es col·loca l'opció TOS per a connexions d'usuaris al valor que s'hagi indicat"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"habilita el sistema que evita l'error que hi ha en la libc de BSD que fa que les lectures de fitxers siguin molt lentes."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+"adreça de l'intermediari HTTP que s'utilitzarà per a les connexions amb rastrejador"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+"tanca les connexions amb RST i evita l'estat TIME_WAIT del protocol TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Usa biblioteques de xarxa Twisted per a les connexions a la xarxa. Un 1 significa utilitzar twisted, un 0 significa no utilitzar twisted, i -1 significa autodetectar, amb preferència pel twisted."
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nom del fitxer (per torrents que tenen només un fitxer) o nom del directori (per torrents amb múltiples fitxers) amb què es desarà, eliminant així el nom que apareix al torrent. Consulteu també l'ús de --save_in, si no s'especifica cap dels dos, es demanarà a l'usuari a on el vol desar"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "mostra la interfície d'usuari avançat"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"el nombre màxim de minuts per a sembrar un torrent ja completat abans d'aturar la sembra"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"la relació mínima en percentatge entre bytes pujats i baixats a la quals'haurà d'arribar abans de deixar de sembrar. Poseu un 0 perquè no hi hagi límit."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"la relació mínima en percentatge entre bytes pujats i baixats a la quals'haurà d'arribar abans de deixar de sembrar l'últim torrent. Poseu un 0 perquè no hi hagi límit."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Segueix sembrant cada torrent completat indefinidament (fins que l'usuari el cancel·li)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Sembra el darrer torrent indefinidament (fins que l'usuari el cancel·li)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "inicia el programa de descàrregues en estat de pausa"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"especifica com s'ha de comportar l'aplicació quan l'usuari prova de iniciar manualment un altre torrent: \"replace\" significa substituir sempre el torrent que està en funcionament pel nou, \"add\" significa afegir sempre en paral·lel el nou torrent, i \"ask\" significa demanar-ho a l'usuari cada cop."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Inicia el BitTorrent minimitzat"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"substitueix la versió que proporciona la comprovació de versió HTTP i habilita el mode de depuració de la comprovació de versió"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"substitueix la versió actual emprada en la comprovació de versió i habilita el mode de depuració de la comprovació de versió"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"especifica la mida i la posició de la finestra, en el format: AMPLADAxALÇADA+DESPLAÇAMENTX+DESPLAÇAMENTY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nom del fitxer (per a torrents d'un sol fitxer) o nom del directori (per a torrents de múltiples fitxers) per a desar el torrent, sobreescrivint el nom que apareix al torrent. Consulteu també el funcionament de l'opció --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"nombre màxim de torrents que es permet pujar simultàniament. -1 significa un número raonable (s'intentarà que ho sigui) basat en el valor --max_upload_rate. Els valors automàtics només tenen sentit quan només hi ha un torrent en funcionament."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directori local on es desaran els continguts del torrent. El fitxer (per a torrents d'un sol fitxer) o el directori (per a torrents amb múltiples fitxers) es crearà en aquest directori utilitzant el nom per defecte especificat en el fitxer .torrent. Consulteu també l'ordre --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "si s'ha de demanar o no un lloc per a desar els fitxers descarregats"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"directori local on es guardaran els torrents, amb un nom determinat per --saveas_style. Si es deixa buit, llavors cada torrent es guardarà en el directori del fitxer .torrent corresponent."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+"la freqüència amb què s'escanejarà el directori de torrents. El valor és en segons."
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"espera aquests segons després de detectar un torrent i abans d'iniciar-lo, per evitar competir amb el seguidor"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Com se li posa un nom a un torrent que et baixes: 1: utilitza el nom del fitxer de torrent sense l'extensió .torrent; 2: utilitza el nom codificat dintre del fitxer de torrent; 3: crea un directori amb el nom del fitxer de torrent sense l'extensió .torrent i guarda el torrent en aquest directori amb el nom que es troba dintre del fitxer de torrent; 4: Si el nom del fitxer i el nom que apareix dintre del fitxer .torrent són idèntics, utilitza aquest nom; en cas contrari crea un directori intermedi; AVÍS: les opcions 1 i 2 sobreescriuen fitxers sense avís previ i poden presentar problemes de seguretat."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "si es mostrarà o no la ruta completa o el contingut de cada torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directori on es buscaran fitxers .torrent (semi-recursivament)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "si es mostrarà o no informació de diagnòstic en stdout."
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "la potència de dos per al valor de la mida de les peces"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nom per defecte del tracker"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"si és fals, llavors crea un torrent sense tracker. En comptes de announce URL, utilitza un node fiable amb l'estructura <ip>:<port> o una cadena de caracters buida per buscar nodes de la teva taula de enrutament"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "descàrrega finalitzada"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<desconegut>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "es finalitzarà en %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "la descàrrega s'ha realitzat correctament"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB de pujada / %.1f MB de baixada)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB de pujada / %.1f MB de baixada)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d vistos, més %d de còpies distribuïdes (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d de còpies distribuïdes (següent: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d vistos"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERROR:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "guardant:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "mida del fitxer:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percentatge realitzat:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "temps restant:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "descarregar a:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "velocitat de descàrrega:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "velocitat de pujada:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "compartit:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "estat del seed:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "estat d'usuari:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "No es pot especificar a la vegada les opcions --save_as i --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "s'està tancant"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Error al llegir el fitxer de configuració:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Error al llegir el fitxer .torrent:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "has d'especificar un fitxer .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "La inicialització GUI en mode de texte ha fallat i no pot continuar."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Aquesta interfície de descàrrega requereix el mòdul estàndard de Python anomenat \"curses\" que no està disponible pel port natiu de Python de Windows. Sí que està disponible per port de Python de Cygwin, que es troba en funcionament en tots els sistemes Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Pots utilitzar el \"bittorrent-console\" per fer les descàrregues."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fitxer:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "mida:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "destinació:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progrés:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "estat:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "velocitat baixada:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "velocitat pujada:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "compartit:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "seeds:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "usuaris:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d vistos ara, més %d còpies distribuïdes(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "error/s:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "error:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Pujada Baixada Finalitzats Velocitat"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"descarregant %d peces; hi han %d fragments; %d finalitzades d'un total de %d peces "
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "S'han produït els següents errors durant l'execució:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Utilització: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "announce antic per %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "cap torrent"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERROR DE SISTEMA - S'HA GENERAT UNA EXCEPCIÓ"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Avís:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "no és un directori"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+"error: %s\nfuncionen sense arguments per a les explicacions dels paràmetres"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPCIÓ:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Pots utilitzar \"btdownloadheadless.py\" per fer les descàrregues."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "connectant amb altres usuaris"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Temps estimat en %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Mida"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Pujada"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Total:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s usuaris %s seeds %s còpies distribuïdes - %s baixada %s pujada"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "error:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nfuncionen sense arguments per a les explicacions dels paràmetres"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+"comentari opcional a afegir en el fitxer .torrent per ser llegit per persones"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "fitxer d'arribada opcional per al torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr " %s %s - descodificar %s fitxers de meta-informació"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Ús: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "fitxer de meta-informació: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "informació sobre el hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nom del fitxer: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "mida del fitxer:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "fitxers:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nom del directori: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "mida del paquet de fitxers:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "URL del announce del tracker: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nodes sense tracker:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentari:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Dilluns"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Dimarts"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Dimecres"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Dijous"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Divendres"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Dissabte"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Diumenge"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Gener"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Febrer"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Març"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Abril"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Maig"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Juny"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Juliol"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Agost"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Setembre"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Octubre"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Novembre"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Desembre"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Comprimit: %i Descomprimit: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "No s'han pogut guardar les opcions de forma permanent:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"S'ha produït un error en llegir el fitxer de configuració. El fitxer de configuració antic s'ha desat a \"%s\"."
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Aquesta opció de configuració no coincideix: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Heu de sortir del %s i tornar a instal·lar-lo. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "No s'ha pogut trobar la traducció per a l'idioma \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "El fitxer %s pertany a un altre torrent que es troba en funcionament."
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "El fitxer %s ja existeix però no és un fitxer típic."
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lectura curta. Pot ser que hagin quedat truncats els fitxers?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Format de fitxer de tipus fastresume (represa ràpida) que no és compatible amb aquesta aplicació. Potser pertany a una altra versió de l'aplicació."
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un altre programa sembla haver mogut, reanomenat o eliminat el fitxer, o bé el %s es va penjar la darrera vegada que es va executar."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un altre programa sembla haver modificat el fitxer, o bé el %s es va penjar la darrera vegada que es va executar."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Un altre programa sembla haver canviat la mida del fitxer, o bé el %s es va penjar la darrera vegada que es va executar."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "No s'han pogut llegir les dades de fastresume (represa ràpida):"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "connexió rebutjada"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Heu demanat no fer servir la reutilització en lligar el sòcol (binding), però no puc fer-ho."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() només s'hauria de cridar un cop per reactor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() pot no retornar fins que hi hagi activitat, i pot no processar l'esdeveniment que voleu. Empreu listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+"dades corruptes en el responsefile. La mida total és més petita del que hauria de ser."
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+"dades corruptes en el responsefile. La mida total és més gran del que hauria de ser."
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "s'està comprovant el fitxer existent"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"La informació de --check_hashes 0 o de fastresume (represa ràpìda) no coincideix amb el estat del fitxer (falten dades)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"La informació de fastresume (represa ràpida) no és correcta (els fitxers contenen més dades del que haurien de contenir)."
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+"Edit La informació de fastresume (represa ràpida) no és correcta (valor no legal)."
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"dades corruptes en el disc. Podria ser que tinguessis dues còpies en funcionament?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"se li ha dit al fitxer que finalitzi a l'iniciar, però la peça no ha superat la comprovació del hash"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "No s'ha pogut configurar el signal handler:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "s'ha deixat \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "s'ha afegit \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "s'està esperant la comprovació de hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "descarregant"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Rellegint el fitxer de configuració"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"No pots especificar el nom del fitxer .torrent quan generis més d'un torrent a la vegada"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"La codificació del sistema de fitxers \"%s\" no és compatible amb aquesta versió."
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"No s'ha pogut convertir el nom del fitxer \"%s\" del directori a UTF-8 (%s). Pot ser que la codificació del sistema de fitxers \"%s\" estigui equivocada o que el nom del fitxer contingui bytes no permesos."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"El nom de fitxer/directori \"%s\" conté valors d'unicode reservats que no es corresponen a caracters."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "No s'ha pogut llegir el directori"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "No s'ha pogut iniciar"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "s'està eliminant %s (es tornarà a afegir)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**avís** %s és un torrent duplicat per %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**avís** %s conté errors"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "...ha finalitzat correctament"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "eliminant %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "comprovació finalitzada"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "No s'ha pogut llegir %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"No s'ha pogut descarregar o obrir \n%s\nProva d'utilitzar un navegador per baixar-te el fitxer de torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Es requereix Python %s o superior"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+"És massa tard per activar els RawServer backends, ja que ja s'ha utilitzat %s."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"El announce del tracer encara no està llest després de %d segons d'iniciar-lo."
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Problema al connectar amb el tracker. Ha fallat l'operació gethostbyname."
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema al connectar amb el tracker."
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dades corruptes del tracker."
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "no ha estat admès pel tracker."
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Es cancel·larà el torrent perquè el tracker no l'accepta pel fet que cap usuari hi està connectat."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Missatge del tracker:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "avís del tracker."
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Ha fallat la cerca sense seguidor:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo incorrecta: no és un diccionari"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo incorrecta: clau de peces incorrecta"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo incorrecta: longitud de la peça no permesa"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo incorrecta: nom incorrecte"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "el nom %s no es permet per qüestions de seguretat"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "barreja de fitxers únics i múltiples"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo incorrecta: longitud incorrecta"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo incorrecta: \"fitxers\" no és una llista de fitxers"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo incorrecta: l'entrada 'fitxer' ha de ser un diccionari"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo incorrecta: ruta incorrecta"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo incorrecta: directori de ruta incorrecte"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "la ruta %s no és permesa per qüestions de seguretat"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo incorrecta: ruta doble"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo incorrecta: el nom s'ha utilitzat tant pel nom del fitxer com pel nom del subdirectori"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo incorrecta: tipus d'objecte incorrecte"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo incorrecta: cap cadena de caracters de la URL del announce"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo incorrecta: el node no és una llista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "metainfo incorrecta: la llista de nodes ha de tenir només dos elements"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "metainfo incorrecta: el nom de màquina del node ha de ser una cadena"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "metainfo incorrecta: el port del node ha de ser un enter"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "el motiu de la fallada ha de ser una cadena"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "el missatge d'avís ha de ser una cadena"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"entrada no vàlida a la llista d'usuaris: la informació de l'usuari ha de ser un diccionari"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"entrada no vàlida a la llista d'usuaris: la IP de l'usuari ha de ser una cadena"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"entrada no vàlida a la llista d'usuaris: el port de l'usuari ha de ser un enter"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+"entrada no vàlida a la llista d'usuaris: identificació d'usuari no vàlida"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "llista d'usuaris no vàlida"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "interval d'announce no vàlid"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "interval d'announce mínim no vàlid"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "Identificador de tracker no vàlid"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "Número d'usuaris no vàlid"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "Número de seeds no vàlid"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "Entrada \"última\" no vàlida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Utilització: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPCIONS][DIRECTORI DEL TORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Si un argument que no és una opció es troba present, es pren com el valor\nde la opció torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPCIONS][FITXERS DE TORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPCIONS][FITXER DE TORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPCIÓ] FITXER TRACKER_URL[FITXER]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "opcions: \n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(per defecte és"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "clau desconeguda"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "s'ha processat un paràmetre en un final sense cap valor"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "el processament de les ordres ha fallat en"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Es requereix l'opció %s"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Has de subministrar com a mínim %d arguments."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Massa arguments - %d és el màxim."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "Format de %s - %s equivocat"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port que s'escoltarà."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fitxer on guardar la informació recent del downloader"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "temps màxim abans de tancar les connexions"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "número de segons entre cada cop que es guarda el fitxer dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "número de segons entre downloaders que caduquen"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+"número de segons que els downloaders hauran d'esperar entre nous announcements"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"nombre de peers a qui enviar el missatge d'informació per defecte si el client no n'especifica cap"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"temps a esperar per comprovar si alguna connexió ha esgotat el seu temps"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"quants cops s'ha de comprovar si un downloader és darrere d'una NAT (0 = no comprovar)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"si s'han d'afegir entrades al log pels resultats de la comprovació de NATs"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"temps mínim que ha d'haver passat des de l'últim buidat per fer-ne un altre"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"el temps mínim en segons abans que la cache es consideri saturada i es buidi"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"només permetre descàrregues de fitxers .torrent en aquest directori (i de forma recursiva en subdirectoris de directoris que no continguin fitxers .torrent).Sis'activa, els torrents d'aquest directori apareixeran en la pàgina d'informació indicant si tenen usuaris o no."
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permetre que claus especials en torrents en el directori allowed_dir afectin l'accés dels trackers"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "Si es reobrirà o no el fitxer log al rebre el senyal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"Si es mostrarà o no una pàgina d'informació quan el directori arrel del tracker s'hagi carregat"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "una URL a on es redireccionarà la pàgina d'informació"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "si es mostraran o no els noms des d'un directori permès"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"fitxer que conté dades x-icon per mostrar quan el navegador demani el favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorar el paràmetre GET de l'IP dels ordenadors que no es trobin en IPs de xarxes locals(0 = mai, 1 = sempre, 2 = ignorar si la comprovació del NAT no està activada). Capçaleres proxy HTTP que donen l'adreça del client original es tractaran de la mateixa manera que l'opció --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"fitxer on s'escriuran els logs del tracker. Cal utilitzar - per stdout (predeterminat)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"utilitza-ho amb allowed_dir; això afegeix una URL de tipus file?hash={hash} que permet als usuaris descarregar el fitxer de torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"mantenir els torrents que estiguin morts encara que hagin caducat (de forma que segueixin apareguent en el /scrape i en la pàgina web). Només té sentit si allowed_dir no està activat"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "permetre accés scrape (hi han vàries opcions: cap, específic o total)."
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "nombre màxim d'usuaris a mostrar per una petició"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"el teu fitxer pot ser que existeixi en algun altre lloc de l'univers\nperò està clar que aquí no hi és\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**avís** El fitxer \"favicon\" especificat (%s) no existeix."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**avís** El fitxer d'estat %s està fet malbé; es procedirà a reiniciar"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Log iniciat:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**avís** No s'ha pogut redireccionar el stdout al fitxer log:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log reobert:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**avís** No s'ha pogut tornar a obrir el fitxer log"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "la funció scrape no està disponible amb aquest tracker"
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+"la funció scrape no està disponible en tota la seva totalitat amb aquest tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "l'opció \"get\" no està disponible amb aquest tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"La descàrrega que has demanat no es permet utilitzar amb aquest tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+"executa sense opcions addicionals per a rebre explicacions dels paràmetres"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# S'està tancant"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "No es poden iniciar dos instàncies diferents d'un mateix torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Amaga %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Mostra %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+"és un string que no està codificat correctament segons el sistema bencode"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+"valor codificat en sistema bencode no vàlid (dades després del prefix vàlid)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "el maxport (port màxim) té un valor menor que el minport (port mínim)"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "No s'ha pogut obrir un port d'escoltar: %s"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "No s'ha pogut obrir un port d'escoltar: %s"
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Comprovar la configuració dels ports."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Posada en marxa inicial"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "No s'han pogut carregar les dades de fastresume (represa ràpida): %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Es durà a terme una comprovació de hash completa."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "la peça %d ha fallat la prova de hash al tornar-la a descarregar"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"S'ha intentat descarregar un torrent sense tracker amb el programa client de funcionament sense tracker apagat."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "ha fallat la descàrrega:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Error d'Entrada/Sortida: No queda espai en el disc o bé no es pot crear un fitxer d'una mida tan gran:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "s'ha cancel·lat per error d'E/S:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "s'ha cancel·lat per error del sistema operatiu:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "cancel·lat per error intern:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Error addicional al tancar degut a un error:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+"No s'ha pogut esborrar el fitxer de fastresume (represa ràpida) després de l'error:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "fent un seed"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "No s'han pogut escriure les dades del fastresume (represa ràpida):"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "tancament"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Això sembla ser una versió antiga de Python que no és compatible amb la detecció de la codificació de sistemes de fitxers. Se suposarà que la codificació és 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python no ha aconseguit detectar automàticament la codificació del sistema de fitxers. S'utilitzarà el sistema ASCII."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"La codificació del sistema de fitxers '%s' no és compatible. S'utilitzarà el sistema ASCII."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Component de ruta de fitxers dolent:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Aquest fitxer .torrent s'ha creat amb una eina que no funciona bé, i per aquest motiu han aparegut els noms de fitxers mal codificats. Alguns o tots els noms dels fitxers poden apareixer de forma diferent a la que l'autor del fitxer .torrent pretenia."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Aquest fitxer .torrent s'ha creat amb una eina que no funciona bé, i per tant hi han valors de caracter que no es corresponen a cap caracter. Alguns o tots els noms dels fitxers poden apareixer de forma diferent a la que l'autor del fitxer .torrent pretenia."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Aquest fitxer .torrent s'ha creat amb una eina que no funciona bé, i per tant té noms de fitxer mal codificats. Els noms utilitzats, per això, pot ser que segueixin sent correctes."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"El joc de caracters utilitzat en el sistema de fitxers local (\"%s\") no pot representar tots els caracters utilitzats en els nom/s de fitxer d'aquest torrent. Els noms de fitxers han estat canviats de l'original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"El sistema de fitxers de Windows no pot gestionar alguns dels caràcters dels noms de fitxer d'aquest torrent. S'han canviat els noms de fitxer originals."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Aquest fitxer .torrent s'ha creat amb una eina que no funciona bé i té com a mínim1fitxer amb un fitxer o directori no vàlid. Tot i això, com que aquests fitxers estaven marcats com de llargada zero, simplement s'han ignorat."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Ordre no gestionada: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "No s'ha pogut crear el socket de control perquè ja es troba en ús"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "No s'ha pogut eliminar el nom de fitxer del socket de control antic:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "No s'ha pogut crear socket de control:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "No s'ha pogut enviar l'ordre:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex global ja creat."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "No s'ha pogut trobar cap port obert."
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "No s'ha pogut crear un directori de dades d'aplicació."
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"No s'ha pogut aconseguir el bloquejador de mútex global pel fitxer de control del socket."
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Hi ha una instància anterior de BT que no s'havia esborrat del tot. Es continuarà."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+"Hi ha una altra instància del BT en execució, però \"%s\" no existeix.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Miraré d'esbrinar el port."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port trobat: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "No s'ha pogut trobar el port."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Estat de l'IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Conversa DDE connectada."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "no s'ha pogut desregistrar o tancar el sòcol de servidor: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket de servidor perdut"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "El sistema de detecció d'errors ha acceptat la connexió:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Cal sortir del programa perquè la pila de TCP s'ha desbordat. Consulteu les Preguntes Més Freqüents a %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "s'ha rebut un tipus de missatge desconegut"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "temps excedit"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..8854c30
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,2828 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-30 11:15-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Nainstalujte Python %s nebo vyšší"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "Toto je již překonaný přístup, doporučujeme nepoužívat"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Nepodařilo se komunikovat s dalším procesem %s, jeden proces může bý spuštěný."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Uzavření všech %s oken by mělo vyřešit váš problém."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s je již spuštěn"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Selhala komunikace s jiným %s procesem."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Je požadován PyGTK %s nebo novější"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "přetáhnutím myší uspořádejte jinak"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "stisknutím pravého tlačítka zobrazíte nabídku"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "vytáčené připojení"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "Kabel DSL, odesílání 128 kB"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "Kabel DSL, odesílání 256 kB"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL, odesílání 768 kB"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Zadejte URL torrentu."
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Zadejte URL otevíraného souboru torrent:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximální odchozí rychlost:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Dočasně pozastavit všechny spuštěné torrenty"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Obnovit stahování"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Ke stažení je k dispozici nová verze %s. "
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Je k dispozici novější verze %s .\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Používáte verzi %s a nová verze je %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Poslední verzi můžete získat vždy z \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Stáhnout _později"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Stáhnout _teď"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Upozornit později"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "O programu %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Používáte verzi: %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Nelze otevřít %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Podpořte vývoj finanční částkou, klepněte zde"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Protokol aktivit %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Uložit protokol do:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Protokol uložen"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Protokol vymazán"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Nastavení %s "
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Obecné"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Spustit BitTorrent po startu Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimalizovat do systémové lišty"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Indikátor průběhu je vždy černý\n(vyžaduje se restart aplikace)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Ukládá se"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Ukládat nová stahování do:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Změnit..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Vždy se zeptat, kam uložit nové stahováni"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Stahuje se"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Při spouštění nového torrentu:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Zastavit ostatní spuštěné torrenty, aby se vytvořilo místo"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Nezastavovat ostatní spuštěné torrenty"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Vždy se dotázat"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Sdílí se jako kompletní zdroj"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Sdílet kompletní torrenty: dokud poměr sdílení nedosáhne [_] procent nebo po dobu [_] minut, podle toho, co nastane dříve."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Sdílet bez omezení doby trvání"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Sdílet poslední úplně stažený torrent: dokud poměr sdílení nedosáhne [_] procent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Síť"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Najít přístupné porty:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "začít na portu:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Povolit automatické mapování portu"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Adresa IP odeslaná trackeru:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Tato volba nemá žádný efekt, je-li\ntracker na stejné síti jako vy)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"UPOZORNĚNÍ: Změna těchto nastavení může způsobit\n,že %s přestane fungovat správně."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Volba"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Hodnota"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Rozšířené"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Zvolte standardní adresář pro stahování"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Nepodařilo se odstranit klávesovou zkratku: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Soubory v \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nikdy"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nikdy nestahovat"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normální"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Stahovat normálně"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "První"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Stahovat první"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Název souboru"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Délka"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Stahování"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nikdy"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "první"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Stahující pro \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Adresa IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Připojení"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "kB/s - stahování"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s - odesílání"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB staženo"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB odesláno"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% hotovo"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "kB/s prům. stahování stahujícího"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID stahujícího"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Zaujatý"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Zanesený"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Ignorovaný"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistické odesílání"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "vzdálený"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "místní"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "špatný stahující"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d v pořádku"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d špatně"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "zakázaný"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "v pořádku"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info o \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Název torrentu:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent bez trackeru)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Oznamující adresa:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", v jednom souboru"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", v %d souborech"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Celková velikost:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Části:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informativní hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Uložit v:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Název souboru:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Otevřít adresář"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Zobrazit_seznam souborů"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informace o torrentu"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Odebrat torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Zrušit torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", bude sdílen do %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", bude sdílen natrvalo."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Dokončeno, poměr odeslání/stažení je: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Dokončeno, odesláno %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Dokončeno"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informace o torrentu"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Seznam souborů"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Seznam _stahujících"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Změnit cílovou složku"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Sdílet na neurčito"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_Restart"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Dokončit"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Odstranit"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Zrušit"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Jste si naprosto jisti, že chcete odstranit \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Váš poměr sdílení pro tento torrent je %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Již jste vyslali %s do tohoto torrentu."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Odstranit tento torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Dokončeno"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "přetáhněte torrent myší do seznamu, chcete-li ho sdílet"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Chyba"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "přetáhněte torrent myší do seznamu, chcete-li pokračovat"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Čekám"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pozastaveno"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Spuštěný"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Aktuální odesílání: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Aktuální stahování: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Předchozí odesílání: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Předchozí stahování: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Poměr odesílání/stahování: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s stahujících, %s sdílejících uživatelů. Celkem z trackeru: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Distribuovaných kopií: %d; Další: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Částí: %d celkem, %d dokončeno, %d částečně, %d aktivních (%d prázdné)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d špatných částí + %s ve zrušených požadavcích"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% dokončeno, %s zbývá"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Rychlost stahování"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Rychlost odesílání"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Není použito"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s spuštěn"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Ukončit aplikaci"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "K_onec"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Otevřít soubor torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Otevřít _URL torrentu"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Vytvořit _nový torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pozastavit/Spustit"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Zobrazit/Skrýt _dokončené torrenty"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Změnit velikost okna na vyhovující"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Protokol"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Nastavení"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Nápověda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_O aplikaci"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Přispějte na vývoj"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Soubor"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Zobrazit"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Hledat torrenty"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(zastaveno)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(vícenásobné)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Už staženo %s instalátoru"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Instalovat nový %s hned?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Ukončit %s a instalovat novou verzi, %s, nyní?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s nápověda je na \n%s\nChcete navštívit tuto stránku již nyní?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Navštívit webovou stránku nápovědy?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "V seznamu je jeden dokončený torrent."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Chcete ho odstranit?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "V seznamu je %d dokončených torrentů."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Chcete je všechny odstranit?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Odstranit všechny dokončené torrenty?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Žádné dokončené torrenty"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nejsou žádné dokončené torrenty pro odstranění."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Otevřít torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Změnit adresář pro ukládání na"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Soubor již existuje!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" již existuje. Chcete použít jiný název souboru?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Adresář pro uložení"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Adresář existuje!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" již existuje. Chcete vytvořit stejně pojmenovaný adresář uvnitř tohoto adreáře?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globální zpráva): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Chyba %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Objevilo se několik chyb. Stisknutím OK zobrazte protokol chyb."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Zastavit spuštěný torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Chystáte se spustit \"%s\". Chcete rovněž zastavit další spuštěný torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Přispěli jste již na vývoj?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Vítá Vás nová verze %s. Přispěli jste již na vývoj?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Děkujeme!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Děkujeme za finanční příspěvek! Pokud budete chtít přispět znovu, zvolte \"Přispějte na vývoj\" v nabídce \"Nápověda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Nelze spustit TorrentQueue, viz chyby výše."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s vytvářeč souborů torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Vytvořit soubor torrent pro tento soubor/adresář:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Zvolte..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Adresáře se stanou skupinou torrentů)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Velikost části:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Použít _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Použít _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Uzly (volitelné):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komentáře:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Vytvořit"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Název hostitele"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Vytváří se torrenty..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Zjišťuje se velikosti souborů..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Spouští se sdílení"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "vytváří se"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Dokončeno."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Dokončeno vytváření torrentů."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Chyba!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Chyba při vytváření torrentů:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Je požadován GTK %s nebo novější"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dní"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 den %d hodin"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d hodin"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minut"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d vteřin"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 vteřin"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Nápověda"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Často kladené dotazy (FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Přejít"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Zvolte existující adresář..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Všechny soubory"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrenty"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Vytvořit novou složku..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Zvolte soubor"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Zvolte adresář"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Nelze načíst uložený stav:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Nelze uložit stav uživatelského rozhraní:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Neplatný stav obsahu souboru"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Chyba načítání souboru \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "nelze úplně obnovit předchozí stav"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Neplatný stavový soubor (duplicitní záznam)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Zničená data v \"%s\", torrent nelze obnovit."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash - nesoulad)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Neplatný stavový soubor (špatný záznam)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Špatný soubor se stavy uživatelského rozhraní"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Špatná verze souboru se stavy uživatelského rozhraní"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Nepodporovaná verze souboru se stavy uživatelského rozhraní (z novější verze klientu?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Nelze odstranit úložiště %s souboru:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Toto není platný soubor torrent. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Tento torrent (nebo jiný se stejným obsahem) již je spuštěn."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Tento torrent (nebo jiný se stejným obsahem) již čeká na spuštění."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent je v neznámém stavu %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Nelze zapsat soubor"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrent nebude restartován správně během restartu klientu"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Nelze spustit více než %d torrentů najednou. Více informací viz často kladené dotazy (FAQ) na: %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrent se nespustí, protože ostatní torrenty čekají na spuštění a tento již splnil podmínky určené v nastavení pro zastavení sdílení."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Torrent se nespustí, protože již splnil podmínky určené v nastavení pro zastavení sdílení."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Nelze získat poslední verzi z %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Nelze analyzovat textový řetězec nové verze v %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "Nelze najít vhodné dočasné umístění pro uložení %s %s instalátoru"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "K dispozici není žádný torrent pro %s %s instalátor."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "Instalátor %s %s není kompletní, chybí nebo je zničen."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Nelze spustit instalátor na tomto operačním systému"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Žádné torrenty"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Zahajuje se stahování"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Běží normálně"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Stahování může být pomalé:\nZřejmě chráněno bránou firewall/NATted"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Ověřit síťové připojení"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"adresář, kde se budou ukládat soubory obsahující informace o rychlém obnovení torrentu a stavový soubor uživatelského rozhraní. Výchozí adresář je \"data\" v adresáři s nastavením BitTorrentu."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"znakové kódování použité v místním souborovém systému. Pokud není vyplněno, bude kódování detekováno automaticky. Automatická detekce nefunguje s pythonem starším než 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Kód ISO jazyka, který se má použít"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"Adresa IP odeslaná trackeru (tato volba nemá žádný efekt, je-li tracker ve stejné síti jako vy)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"port viditelný zvenčí, je-li jiný než místní, na kterém klient naslouchá"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"minimální port, na kterém se má naslouchat, přičítá se, je-li nedostupný"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "maximální port, na kterém se má naslouchat"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP, která se má nastavit jako místní"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekund mezi aktualizací zobrazovaných informací"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minut čekání mezi požadavky více stahujících"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimální počet stahujících pro nezasílání nového požadavku"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "počet stahujících, u kterého se zastaví navazování nových spojení"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "max. počet odchozích nedokončených spojení"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maximální povolený počet připojení, po překročení budou další připojení okamžitě ukončena"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "zda kontrolovat hashe na disku"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximální rychlost odesílání v kB/s, 0 nenastaví žádný limit"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "počet odesílání, které vyplnit velmi optimistickými uvolňováními"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"maximální počet souborů ve vícesouborovém torrentu, které jsou otevřené najednou, 0 znamená bez omezení. Zabrání se tím vyčerpání popisovačů souborů."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicializovat beztrackerový klient. Toto musí být povoleno pro stahování beztrackerových torrentů."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "počet sekud přestávky mezi udržováním odesílání"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "na kolik bajtů se dotázat pro jeden požadavek."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"Nejvyšší přijatelná délka kódování předpony - větší hodnoty přeruší spojení."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "sekund čekání mezi uzavíráním socketů, kterými nebylo nic přijato"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"sekund čekání mezi zjišťováním, zda některé navázané připojení nebylo ukončeno z důvodů překročení časového limitu"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maximální délka části k zaslání stahujícím, ukončit připojení, je-li přijat větší požadavek"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"maximální časový interval odhadu aktuální hodnoty odesílání a stahování"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "maximální časový interval odhadu aktuálního poměru sdílení"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "maximální doba čekání mezi pokusy oznámení, pokud jsou stále chybná:"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"počet sekund čekání na příchozí data, než bude spojení považováno za neprůchodné"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"počet stahování, od kterých se má přepínat z náhodného na nejbližší první"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "kolik bajtů zapsat najednou do vyrovnávací paměti sítě"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"odmítnout další připojení z adres s poškozenými nebo záškodnickými stahujícími, kteří posílají nesprávné údaje"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "nepřipojovat ke stahujícím se stejnou adresou IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"pokud je nenulové, nastaví hodnotu TOS pro spojení stahujících na tuto hodnotu"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"povolit provizorní řešení při chybě v knihovně BSD, které velmi zpomalí čtení souborů"
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adresa proxy HTTP používaná pro připojení k trackerům"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "ukončit spojení s RST a zabránit stavu TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Použít pokroucené síťové knihovny pro síťové spojení.\"1\" znamená použít,\"0\" znamená nepoužít,\"-1\" zapne automatickou detekci a dá přenost pokroucené"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"název souboru (pro jednosouborové torrenty) nebo název adresáře (pro dávkové torrenty) pro ukládání torrentu, který přepíše výchozí název uvedený v torrentu. Viz. také --save_in, pokud to není nikde uvedeno, uživatel bude dotázán na místo uložení"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "zobrazit rozhraní pro zkušeného uživatele"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "maximální počet minut před ukončením sdílení zcela staženého torrentu "
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"nejnižší hodnota poměru odesláno/staženo v procentech, po dosažení bude zastaveno sdílení. 0 znamená bez limitu."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"nejnižší hodnota poměru odesláno/staženo v procentech, po dosažení bude zastaveno sdílení posledního torrentu. 0 znamená bez limitu."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Sdílet všechny stažené torrenty natrvalo(dokud uživatel sdílení ručně nezastaví)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Sdílet poslední stažený torrent natrvalo (dokud uživatel sdílení ručně nezastaví)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "spouštět stahovač v pozastaveném stavu"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"určuje jak se má aplikace zachovat když uživatel ručně zkusí spustit jiný torrent: \"nahradit\" znamená vždy zaměnit běžící torrent novým, \"přidat\" znamená vždy souběžné spuštění torrentu a \"zeptat se\" znamená vždy se zeptat uživatele."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Spustit BitTorrent minimalizovaně"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"vynechat verzi poskytnutou kontrolou verzí http a povolit ladicí režim kontroly verzí"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"vynechat aktuální verzi použitou při kontrole verzí a povolit ladicí režim kontroly verzí"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"zadejte polohu a velikost okna ve formátu: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"název souboru (pro torenty obsahující jeden soubor) nebo název adresáře (pro skupinové torrenty) pro uložení torrentu po jiným názvem, a tím nahradit původní název. Podívejte se také na --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"Maximální počet současně odesílaných souborů. Bude-li zadána hodnota -1 bude zvolen ideální počet v závislosti na hodnotě --max_upload_rate (maximální datová propustnost směrem ven). Automatická nastavení bývají dostatečně účinná, pouze pokud probíhá jediné stahování torrentu v jednom okamžiku."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"Místní adresář, do kterého budou ukládány všechny stahované torrenty. Torrenty obsahující jeden soubor budou uloženy přímo do tohoto adresáře, torrenty o více souborech do podadresáře (jeho název bude převzat z názvu souboru .torrent souboru). Podívejte se také na --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"ovlivní, zda se bude program dotazovat uživatele na umístění stahovaných souborů"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"definuje adresář, do kterého budou stahované torrenty ukládány pod názvem předepsaným hodnotou --saveas_style. Pokud není tato hodnota vyplněna, bude každý torrent uložen do adresáře, jehož název bude převzat z názvu příslušného souboru .torrent."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "jak často prohledávat složku torrentů (v sekundách)"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"Po upozornění torrentu vyčkejte udaný počet sekund, než torrent spustíte. Vyhnete se tak \"závodu\" s koordinátorem."
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Jak pojmenovávat stažené torrenty: 1: použít název souboru torrent (bez .torrent); 2: použít název zakódovaný v souboru torrent; 3: vytvořit adresář s názvem podle souboru torrent (bez .torrent); 4: jestliže název souboru torrent (bez .torrent) a název zakódovaný v souboru torrent jsou stejné, použijte název způsob 1 či 2), jinak vytvořte adresář, jako ve způsobu 3; VAROVÁNÍ: možnosti 1 a 2 mohou přepsat soubory bez varování a mohou způsobovat bezpečnostní problémy."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "zda zobrazovat celou cestu nebo obsah torrentu pro každý torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "Adresář pro vyhledání souborů .torrent (částečně opakovatelný)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+"ovlivní, zda budou zobrazovány diagnostická hlášení a informace do standardního výstupu (stdout)"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "na jakou mocninu dvou se má nastavit velikost kusu "
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "výchozí název trackeru"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"pokud má hodnotu nepravda (false), vytvořte místo oznámeného URL torrent bez trackeru, použijte spolehlivý uzel ve tvaru <ip_adresa>:<port> nebo použijte prázdný řetězec, aby se načetly určité uzly z vaší směrovací tabulky"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "stahování dokončeno!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<neznámé>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "dokončení v %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "stahování proběhlo úspěšně"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB ven / %.1f MB dovnitř)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB ven / %.1f MB dovnitř)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "Doposud %d, navíc %d distribuovaných kopií (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d distribuovaných kopií (další: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d nyní viděno"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "CHYBA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "ukládání:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "velikost souboru:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "procent dokončeno:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "zbývající čas:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "stáhnout do:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "rychlost stahování:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "rychlost odesílání:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "rychlost sdílení:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "Stav sdílení"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stav stahujícího uživatele:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Nemůžete použít současně --save_as a --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "vypíná se"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Chyba čtení konfigurace:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Chyba čtení souboru .torrent:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "musíte blíže určit soubor .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Inicializace GUI v textovém módu selhala, nelze provést."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Toto stahovací rozhraní potřebuje standardní modul Pythonu \"curses\", který bohužel není přirozenou součástí instalace Windows. Je však částí implementace Pythonu pod Cygwinem, který lze spustit na všech Win32 systémech (www.cygwin.com). "
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Stále ještě můžete pro stahování použít \"bittorrent-console\""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "soubor:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "velikost:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "cíl:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "průběh:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "stav:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "rychlost dovnitř:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "rychlost ven:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "sdílení:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sdílené zdroje:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "Vrstvy"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d viděn,plus %d distribuované kopie(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "chyby:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "chyba:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Vysílaná Stahovaná dokončená rychlost"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "stahování %d kusů,mělo %d úlomků,%d z %d kusů dokončeno"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Tyto chyby se vyskytly během provádění:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Použití: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "staré oznámení pro %s:%s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "žádné torrenty"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTÉMOVÁ CHYBA - GENEROVÁNA VÝJIMKA"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Varování:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "není adresář"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "chyba: %s\nspusťte bez ?args? pro vysvětlení"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nVÝJIMKA:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Můžete stále používat \"btdownloadheadles.py\" pro stahování."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "připojování ke stahujícím"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA v %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Velikost"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Vysílání"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Součty:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s stahujících %s sdílejících %s distr. kopií - %s dovnitř %s ven"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "chyba:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nSpusťte bez ?args? parametrů pro vysvětlení"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "volitelný čitelný komentář pro vložení do .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "volitelný cílový soubor pro torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - rozpoznáno %s metainfo souborů"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Použití: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo soubor: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "jméno souboru: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "velikost souboru:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "soubory:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "jméno adresáře: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "velikost archivu:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "oznamovací adresa trackeru: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nodů bez trackeru:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "poznámka:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Pondělí"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Úterý"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Středa"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Čtvrtek"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Pátek"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sobota"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Neděle"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Leden"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Únor"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Březen"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Duben"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Květen"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Červen"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Červenec"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Srpen"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Září"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Říjen"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Listopad"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Prosinec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Zkomprimováno: %i Nezkomprimováno: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Nemohu permanentně uložit volby:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Soubor %s patří k jinému činnému torrentu"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Soubor %s už existuje, ale není řádným souborem"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Nepodporovaný rychle pokračující formát souboru, možná pro jinou verzi klienta?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Zdá se, že jiný program přesunul, přejmenoval nebo smazal soubor, nebo %s mohl být zničen při posledním spuštení."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Zdá se, že jiný program změnil soubor, nebo %s mohl být zničen při posledním spuštení."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Zdá se, že jiný program změnil velikost souboru, nebo %s mohl být zničen při posledním spuštení."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Nelze číst rychle obnovitelná data:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "špatná data v souboru odezvy - součet je příliš malý"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "špatná data v souboru odezvy - součet je příliš velký"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "kontrola existujícího souboru"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Špatné info o rychlé obnově (soubor obsahuje více dat)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Špatné info o rychlé obnově (nepřípustná hodnota)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "zničená data na disku - možná máte spuštěné dvě kopie?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "stahování"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Nemůžete specifikovat název .torrent souboru když vytváříte více torrentů najednou"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Kódování systému souborů \"%s\" není podporováno v této verzi"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Nemohu přejmenovat soubor/adresář \"%s\" do utf-8 (%s). Buď je převzaté kódování systému souborů \"%s\" špatné nebo název souboru obsahuje špatné bajty."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Soubor/jméno složky \"%s\" obsahuje rezervované hodnoty unicode to neodpovídá znakům"
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... úspěšný"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "odstraňování %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "kontrola ukončena"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Nelze přečíst %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Nelze stáhnout nebo otevřít\n%s\nZkuste použít internetový prohlížeč pro stáhnutí torrent souboru."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Oznámení trackeru ještě stále není dokončeno %d vteřín po spuštění"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problém během připojování na tracker, gethostbyname() selhal -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problém s připojováním na tracker -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "špatná data z trackeru -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "odmítnuto trackerem -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Torrent byl zrušen odmítnutím trackeru, jelikož se nespojil s žádným stahujícím."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Zpráva od trackera:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "varování od trackera -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "špatné metainfo - \"soubory\" nejsou na seznamu souborů"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Použití: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "neznámý klíč"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Příliš mnoho parametrů - maximálně %d."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr "kolikrát zkusit zda stahující je za NAT (0 = nezkouštet)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "přidávat do záznamu výsledky zkoušek zda je uživatel za NAT"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "minimální časové rozpětí ve vteřinách mezi splachováním cache"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"minimální čas ve vteřinách kdy se cache může označit jako staré a spláchnout"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"povolit stahování .torrent souborů které jsou pouze v tomto adresáři a podaresářích (krom adresářů vytvořené torrenty). Pokud je toto nastaveno, torrenty z tohoto adresáře zobrazují na informační stránce jestli mají uživatele či ne"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Nelze spustit dvě samostané žádosti stejného torrentu"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Skrýt %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Ukázat %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "neplatný řetězec vnitřního kódu"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maximální port je větší než minimální port - žádné porty ke zjišťování"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Nemohu otevřít naslouchající port: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Nemohu otevřít naslouchající port: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Přezkoumejte vaše nastavení rozsahu portů."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "První spuštění"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Nemohu načíst data pro rychlé obnovení: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Proběhne kompletní hash kontrola."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "část %d neprošla hash kontrolou, znovu jí stahuji"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Pokus stáhnout beztrackerový torrent s vypnutým beztrackerovým klientem."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "stahování selhalo:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Chyba: Není dostatek místa na disku, nebo nemůžu vytvořit tak velký soubor:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "ukončeno IO chybou:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "ukončeno chybou OS:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "ukončeno vnitřní vyjímkou:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Dodatečná chyba při uzavírání kvůli chybě:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Nemohu odstanit soubor rychlého obnovení po selhání:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Nemohu zapsat data pro rychlé obnovení:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "vypnout"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Zdá se to být stará verze Pythonu, která nepodporuje detekci kódování systému souborů. Předpokládá se 'ascii'.\t"
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python selhal při autodetekci kódování systému souborů. Použije se 'ascii' ."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Systém kódování souborů '%s' není podporován. Použije se 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Chyba v části cesty k souboru:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tento .torrent soubor byl vytvořen špatným nástrojem a má nesprávně zakódované názvy souborů. Některé nebo všechny z názvů souborů se proto mohou zobrazit odlišně než autor .torrent souboru zamýšlel."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tento .torrent soubor byl vytvořen špatným nástrojem a má nesprávně zakódované hodnoty znaků, které neodpovídají žádnému znaku. Některé nebo všechny z názvů souborů se proto mohou zobrazit odlišně než autor .torrent souboru zamýšlel."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Tento .torrent soubor byl vytvořen špatným nástrojem a má nesprávně zakódované názvy souborů. Názvy přesto mohou být správné."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Znaková sada použitá na místním souborovém systému (\"%s\") neumí reprezentovat všechny znaky použité v názvu(ech) souborů tohoto torrentu. Jména byla změněna oproti originálu."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Tento .torrent byl vytvořen a rozbitým nástrojem a má nejméně 1 neplatný soubor nebo jméno adresáře. Nicméně protože byli tyto soubory označeny s nulovou délkou budou ignorovány."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Nelze vytvořit řídící socket:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Nelze zaslat příkaz:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Globální mutex již byl vytvořen."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Nemohu najít žádný otevřený port!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Nemohu vytvořit adresář pro data aplikace!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Nemohu získat globální mutex zámek pro soubor kontrolního socketu!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "Minulá instance BT nebyla pořádně vyčištěna. Pokračuji."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "ztracen socket serveru"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Chyba v řízení povoleného připojení:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Musím ukončit aplikaci kvůli odpadávání TCP stack. Prosím přečtěte si často kladené dotazy (FAQ) na %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..481de68
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,2842 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 17:49-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installér Python %s eller større"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "forældet, brug ikke"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Kunne ikke kommunikere med en anden %s proces, men én ser ud til at køre."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr " Det vil måske afhjælpe problemet at lukke alle %s vinduer."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s er allerede i gang"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kunne ikke kommunikere med en anden %s proces."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s eller nyere krævet"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "træk for ny rækkefølge"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "højreklik for menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "modem"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kabel 128k upload"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kabel 256k upload"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k upload"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Indtast torrent URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Indtast URL for en torrentfil, der skal åbnes:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Højeste upload-hastighed:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Stop alle aktive torrents midlertidigt"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Genoptag downloading"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Ny %s version tilgængelig"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "En nyere version af %s er tilgængelig.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Du bruger %s, og den nye version er %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Du kan altid få den nyeste version fra \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Download _senere"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Download _nu"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Påmind mig senere"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Om %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Kunne ikke åbne %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donér"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Aktivitetslog"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Gem log i:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "log gemt"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "log slettet"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Indstillinger"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Generelt"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Start BitTorrent, når Windows starter"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimér til systembakken"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Statuslinieteksten er altid sort\n(kræver genstart)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Gemmer"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Gem nye downloads i:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Ændr..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Spørg hvor hver ny download skal gemmes"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Download"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Ved start af ny torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Anskaf plads ved at stoppe en aktiv torrent"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Undlad at stoppe aktive torrents"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Spørg hver gang"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seed"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Seed færdige torrents: indtil delingsforholdet når [_] procent, eller i [_] minutter, alt efter hvad der kommer først."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seed uendeligt"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Seed sidste færdige torrent: indtil delingsforholdet når [_] procent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Netværk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Søg efter tilgængelig port:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "startende med port nr.: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Aktivér automatisk portkortlægning"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP, der skal sendes til tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Har ingen virkning medmindre du er på\n samme lokale netværk som trackeren)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ADVARSEL: Ændring af disse indstillinger kan\nforhindre %s i at fungere korrekt."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Valg"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Værdi"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avanceret"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Vælg standard downloadmappe"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Kunne ikke fjerne genvej: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Filer i \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Aldrig"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Download aldrig"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Download normalt"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Først"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Download først"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Filnavn"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Længde"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Download"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "aldrig"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "først/e"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers til \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-adresse"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Forbindelse"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s download"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s upload"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB downloaded"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB uploaded"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% færdig"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. peer-download"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer-ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesseret"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Blokeret"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Afvist"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistisk upload"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "fjern"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "forkert peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d forkert"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "bandlyst"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info om \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentnavn:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent uden tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Meddel url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", i én fil"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", i %d filer"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Størrelse i alt:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Fragmenter:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Gem i:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Filnavn:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Åbn mappe"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Vis _filliste"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent information"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Fjern torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Afbryd torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", vil seede i %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", vil seede uendeligt."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Færdig, delingsforhold: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Færdig, %s uploaded"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Færdig"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Filliste"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peer-liste"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Ændr destination"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Seed uendeligt"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Gen_start"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Afslut"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Afslut"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Er du sikker på du vil fjerne \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Dit delingsforhold for denne torrent er %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Du har uploaded %s til denne torrent. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Fjern denne torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Færdig"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "træk hen på liste for at seede"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Fejlede"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "træk hen på liste for at genoptage"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Venter"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pauset"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Kører"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Aktuel upload: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Aktuel download: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Tidligere upload: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Tidligere download: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Delingsforhold: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds. I alt fra tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Afsendte kopier: %d; Næste: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Fragmenter: %d i alt, %d færdige, %d delvist, %d aktive (%d tomme)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d forkerte fragmenter + %s i slettede forespørgsler"
+
+#: bittorrent.py:2303
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% færdig, %s tilbage"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Downloadhastighed"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Uploadhastighed"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s påbegyndt"
+
+#: bittorrent.py:2784
+msgid "_Quit"
+msgstr "_Luk"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "A_fslut"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Åbn torrentfil"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Åbn torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Opret _ny torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pause/Afspil"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Vis/Skjul _færdige torrents"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Gendan vindue"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Indstillinger"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hjælp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Om"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donér"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Opret fil"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Vis"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Søg efter torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(stoppet)"
+
+#: bittorrent.py:3025
+msgid "(multiple)"
+msgstr "(flere)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Downloader allerede %s-installation"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installér ny %s nu?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Vil du afslutte %s og installere den nye version, %s, nu?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s hjælp findes på \n%s\nVil du omstilles dertil nu?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Besøg hjælp websiden?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Der er én færdig torrent på listen. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Vil du fjerne den?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Der er %d færdige torrents på listen. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Vil du fjerne allesammen?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Fjern alle færdige torrents?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Ingen færdige torrents"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Der er ingen færdige torrents at fjerne."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Åbn torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Ændr gemmeplacering for "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Filen findes!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" findes allerede. Vil du vælge et andet filnavn?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Gemmeplacering for "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Mappen eksisterer!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" eksisterer allerede. Ønsker du at oprette en identisk kopi af mappen i den eksisterende mappe?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(global besked) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Fejl"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Adskillige fejl er opstået. Klik OK for at se fejlloggen."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Stop den aktive torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Du skal til at starte \"%s\". Ønsker du også at stoppe en anden aktiv torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Har du doneret?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Velkommen til den nye version af %s. Har du doneret?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Mange tak!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Tak for doneringen! For yderligere doneringer, vælg \"Donér!\" fra \"Hjælp\"-menuen."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Kunne ikke starte TorrentQueue, se ovenfor for fejl."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrentfil generator %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Lav torrentfil til denne fil/mappe:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Vælg..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Mapper bliver til gruppetorrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Fragmentstørrelse:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Brug _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Brug _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Noder (valgfrit):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Opret"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Vært"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Genererer torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Kontrollerer filstørrelser..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Påbegynd seeding"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "genererer "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Færdig."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrents er færdige."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Fejl!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Fejl ved generering af torrents: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s eller nyere krævet"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dage"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dag %d timer"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d timer"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutter"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekunder"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekunder"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hjælp"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Ofte stillede spørgsmål, FAQ:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Gå"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Vælg en eksisterende mappe..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alle filer"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Opret en ny mappe..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Vælg en fil"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Vælg en mappe"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Den gemte status kunne ikke indlæses: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Kunne ikke gemme UI-status: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Ugyldige data i statusfil"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Fejl ved læsning af filen \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "kan ikke gendanne status fuldstændigt"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ugyldig statusfil (dobbelt indlæsning)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Korrupt data i \"%s\", kan ikke gendanne torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash passer ikke)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ugyldig statusfil (fejlindlæsning)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Forkert UI-statusfil"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Forkert UI-statusfilversion"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"UI-statusfilversion ikke understøttet (fra en nyere version af klienten?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Kunne ikke slette %s fil i cache:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Dette er ikke en gyldig torrentfil. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Denne torrent (eller én med samme indhold) kører allerede."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Denne torrent (eller én med samme indhold) står allerede i kø."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent i ukendt status %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "Kunne ikke skrive til fil "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrent vil ikke blive genstartet korrekt efter genstart af klienten"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Kan ikke køre mere end %d torrents samtidig. Få flere informationer i FAQ'en på %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Starter ikke torrent, eftersom andre torrents afventer start, og denne følger indstillingerne for, hvornår seeding skal ophøre."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Starter ikke torrent, eftersom den allerede følger indstillingerne for, hvornår den senest færdige torrent skal ophøre med at seede."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Kunne ikke få den nyeste version fra %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Kunne ikke parse den nye versionstreng fra %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Kunne ikke finde en egnet midlertidig mappe til at gemme %s %s installationen i."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Ingen torrentfil tilgængelig for %s %s installationen."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s installation lader til at være ufærdig, væk eller korrupt."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Kan ikke starte installationen på dette OS"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Ingen torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Starter download"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Kører normalt"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Download kan være langsom:\nMuligvis firewall/NAT tilstede"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kontrollér netværksforbindelsen"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"mappe, hvori variable data som information om hurtig genoptagelse og GUI-tilstand gemmes. Standardindstillingen er undermappen 'data' i BitTorrents config-mappe."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"tegnkodning i brug på del lokale filssystem. Efterlades feltet tomt, bestemmes kodning automatisk. Autobestemmelse virker ikke under versioner af Python før 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO-sprogkode, der skal bruges"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ip, som skal sendes til trackeren (virker ikke, hvis du ikke er på samme lokale netværk som trackeren)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"portnummer synligt for verden, hvis det adskiller sig fra porten, som klienten lytter på lokalt"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"laveste portnummer, der skal lyttes på, tæller op, hvis denne er utilgængelig"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "højeste portnummer, der skal lyttes på"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip, der skal bindes til lokalt"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekunder mellem opdateringer af den viste information"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutter mellem anmodninger om flere peers"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "antal peers, hvorunder der anmodes om flere peers"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "med dette antal peers startes der ikke nye forbindelser"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "højeste antal udgående ufærdige forbindelser"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maksimalt antal tilladelige forbindelser; herudover lukkes indkommende forbindelser omgående"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "om der skal kontrolleres hashes på disk"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "højeste antal kB/s at oploade med, hvor 0 betyder ingen begrænsninger"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "antal uploads at udfylde med ekstra-optimistiske unchokes"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"det maksimale antal filer i en multifil torrent, der holdes i gang samtidig; 0 betyder ingen begrænsninger. Bruges til at undgå at løbe tør for fildeskriptorer."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Start en klient uden tracker. Denne skal være aktiveret for at kunne downloade torrents uden tracker."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "antal sekunder mellem hold-forbindelsen-i-live-kommandoer"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "antal bytes at bede om pr. anmodning."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"højeste længde for præfikskodning du vil tillade over nettet - større værdier får forbindelsen til at falde ud."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"antal sekunder at vente mellem lukning af forbindelser, hvor intet er blevet modtaget"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"antal sekunder at vente mellem kontrolcheck af, om nogle af forbindelserne er timed out"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maksimal længdefragment at sende til peers; luk forbindelsen, hvis en større anmodning modtages"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"højeste tidsinterval over hvilken man kan bestemme den nuværende upload- og download-hastighed"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"højeste tidsinterval over hvilken den nuværende seed-hastighed vurderes"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"højeste ventetid mellem genprøvning af meddelelser, hvis de bliver ved med at fejle"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"antal sekunder at vente på, at data skal komme ind via en forbindelse, før det antages, at den er semi-permanent blokeret"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"antal downloads, hvorefter der skiftes fra vilkårlig til mest sjældne først"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "antal bytes at skrive til netværkets buffers på samme tid."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"afvis yderligere forbindelser fra adresser med brudte eller bevidst fjendtlige peers, der sender ukorrekte data"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "forbind ikke til flere peers med samme IP-adresse"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"hvis ulig fra nul, sæt TOS-valgmuligheden for peer-forbindelser til denne værdi"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"aktivér omgåelse for en bug i BSD libc, der gør fillæsningen meget langsom."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "den HTTP proxy-adresse, der skal bruges til tracker-forbindelser"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "luk forbindelser med RST og undgå TCP TIME_WAIT-tilstanden"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Benyt snoede netværksbiblioteker til netværksforbindelser. 1 betyder benyt snoet, 0 betyder benyt ikke snoet, -1 betyder detektér automatisk, og foretræk snoet"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"filnavn (gældende for enkeltfil-torrents) eller mappenavn (for gruppe-torrents), som torrenten skal gemmes som, uden hensyn til torrentens oprindelige navn. Se også--gem_i; hvis ingen af de to angives, anmodes brugeren om gemmeplaceringen"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "benyt avanceret brugerflade"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"højeste antal minutter at seede en færdig torrent, før seed skal ophøre"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"det minimale upload-/download-forhold at opnå, i procent, før seed skal ophøre. 0 betyder ingen begrænsninger."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"det minimale upload-/download-forhold at opnå, i procent, før ophør af seed på den sidste torrent. 0 betyder ingen begrænsninger."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "Seed hver færdig torrent uendeligt (indtil brugeren stopper seed)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Seed den sidste torrent uendeligt (indtil brugeren stopper seed)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "start downloader i pauset tilstand"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"angiver, hvordan programmet bør handle, når brugeren manuelt forsøger at starte en ny torrent: \"erstat\" betyder erstat altid den kørende torrent med den nye, \"tilføj\" betyder tilføj altid den nye parallelt med den kørende, og \"spørg\" betyder spørg brugeren hver gang."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Start BitTorrent minimeret"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"ignorér versionen, der angives af http-versionskontrollen, og aktivér versionskontrollens fejlretningsmodus"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"ignorér den nuværende version anvendt i http-versionskontrollen, og aktivér versionskontrollens fejlretningsmodus"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"specificér vinduesstørrelse og -position i formatet: BREDDExHØJDE +XFORSKYDNING +YFORSKYDNING"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"filnavn (gældende for enkeltfil-torrents) eller mappenavn (gruppe-torrents) at gemme torrenten som, uanset torrentens oprindelige navn. Se også--gem_i"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"det højeste antal uploads, der må køre ad gangen. -1 betyder et (forhåbentligt) rimeligt antal baseret på --max_upload_hastighed. De automatiske værdier er kun følsomme, når der kun kører én torrent ad gangen."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"lokal mappe, hvor indholdet af torrents gemmes. Filen (gældende for enkeltfil-torrents) eller mappen (gruppe-torrents) bliver genereret i denne mappe under standardnavnet, der er specificeret i .torrentfilen. Se også--gem_som."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "om der skal spørges, hvor downloadede filer skal gemmes"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"lokal mappe, hvor torrents bliver gemt - under et navn, der angives af__gemsom_mulighed. Hvis dette felt efterlades tomt, gemmes hver torrent i samme mappe som den pågældende .torrentfil"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "hvor ofte torrentmappen skal gen-skannes, angivet i sekunder"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"vent så mange sekunder efter at have fundet en torrent før den startes, for at undgå et ræs med tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Hvordan torrent-downloads navngives: 1: Brug navn PÅ torrent-fil (minus .torrent); 2: Brug navn indkodet I torrent-fil; 3: Opret en mappe med navnet PÅ torrent-filen (minus .torrent) og gem den i den mappe med navnet indkodet I torrent-filen; 4: Hvis navnet PÅ torrent-filen (minus .torrent) og navnet indkodet I torrent-filen er identiske, så brug det navn (mulighederne 1 eller 2), opret ellers en midlertidig mappe som i mulighed 3; FORSIGTIG: Mulighederne 1 og 2 er i stand til at overskrive filer uden varsel og kan muligvis udgøre en sikkerhedsrisiko."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "om der skal vises hele stien eller torrents indhold for hver torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "mappe at lede efter .torrent-filer i (semi-tilbagevendende)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "om diagnostisk info til stdout skal vises"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "hvilken potens af to fragmentstørrelsen skal sættes til"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "standard tracker-navn"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"hvis false så lav en trackerless torrent, istedet for announce URL, brug pålidelig maskine på netværket i form af <ip>:<port> eller en tom streng til at trække nogle maskiner fra din routing tabel"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "download færdig!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<ukendt>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "færdig om %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "download lykkedes"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB upload / %.1f MB download)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB upload / %.1f MB download)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d ses nu, plus %d distribuerede kopier (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d distribuerede kopier (næste: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d ses nu"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FEJL:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "gemmer: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "fil-størrelse: "
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "procent færdig: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tid tilbage: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "download til: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "downloadhastighed: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "uploadhastighed: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "delingsforhold: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "seed-status: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peer-status: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Du kan ikke angive både --save_as og --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "lukker ned"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Fejl ved læsning af config: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Fejl ved læsning af .torrent-fil: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "du må angive en .torrent-fil"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Textmode GUI-initialisering fejlede; kan ikke fortsætte."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Til dette download-interface behøves Python-modulet \"curses\", som desværre ikke findes til den native Windows-portering af Python. Det er dog tilgængeligt for Cygwin-porteringen af Python, der kører på alle Win32-systemer (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Du kan stadig bruge \"bittorrent-console\" til at downloade med."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fil:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "størrelse:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "hvorhen:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "fremskridt:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "downloadhastighed:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "uploadhastighed:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "deler:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "seeds:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d ses nu, plus %d distribuerede kopier(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "fejl(ene):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "fejl:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr " # IP Upload Download Afsluttet Hastighed"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "downloader %d dele, har %d fragmenter, %d af %d dele færdige"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Disse fejl opstod under effektuering:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Anvendelse: %s TRACKER_URL [TORRENTFILE[TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "gammel announce for %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "ingen torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEM ERROR - EXCEPTION GENERATED;SYSTEM FEJL - UNDTAGELSE OPRETTET"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Advarsel: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " er ikke en mappe"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "fejl: %s\nkør uden argumenter for parameterbeskrivelse"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPTION:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Der er dog stadig \"btdownloadheadless.py\", som du kan bruge til at downloade med."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "forbinder til peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA om ca: %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Størrelse"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Upload"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "I alt:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr " (%s) %s - %s peers %s seeds %s delte kopier - %s ned %s op"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "fejl: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nkør uden argumenter for parameterbeskrivelse"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "valgfri modtager-læselig kommentar at vedlægge i .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "valgfri destinationsfil for torrenten"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - afkod %s metainfo-filer"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Anvendelse: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo-fil: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info-hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "filnavn: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "filstørrelse:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "filer:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "mappe: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "arkivstørrelse:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "trackertilmeldings-url: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "trackerless udvekslinger:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "kommentar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Man"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Tirs"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Ons"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Tors"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Fre"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Lør"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Søn"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Maj"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Komprimeret: %i Ukomprimeret: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Kunne ikke gemme indstillingerne permanent: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Kunne ikke oprette konfigurationsfil. Gammel konfigurationsfil gemt i \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Konfigurationsvalg passer ikke: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Du er nødt til at lukke %s og geninstallere det. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Kunne ikke finde oversættelse for sprog \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Filen %s tilhører en anden igangværende torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Filen %s findes allerede, men er ikke en sædvanlig fil"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Kort indlæsning - noget har forkortet filerne?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Ikke understøttet fastresume filformat, måske fra en anden klientversion?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Det lader til et andet program har fjernet, ændret eller omdøbt filen, eller %s gik i stå sidste gang den blev brugt."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Det lader til et andet program har ændret filen, eller %s gik i stå sidste gang filen blev brugt."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Det lader til et andet program har ændret filstørrelsen, eller %s gik i stå sidste gang den blev brugt."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Kunne ikke læse fastresume-data: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "forbindelse afvist"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Du ønskede genbrug til at være ikke-tilsluttet under binding. Dette kan ikke udføres."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() bør kun kaldes én gang per reaktor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() vil måske ikke genstarte indtil der er aktivitet, og vil måske ikke beregne den begivenhed du gerne vil. Brug listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "ukorrekt information er ansvarlig - total er for lille"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "ukorrekt data er ansvarlig - total er for stor"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "tjekker eksisterende fil"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 eller fastresume info matcher ikke filens tilstand (manglende data)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Ukorrekt fastresume info (filer indeholder mere data)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Ukorrekt fastresume info (ulovlig værdi)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "data korrumperet på disk - måske har du to kopier kørende samtidig?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "fortalte filen er komplet ved start, men fejlede hash-check"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Kunne ikke indstille signal-kontrol: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "droppede \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "tilføjede \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "afventer hash-tjek"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "downloader"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Genindlæser config-fil"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Du kan ikke bestemme navnet på .torrent-filen, når du genererer flere torrents på samme tid"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Filsystems-encoding \"%s\" er ikke understøttet i denne version"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Kunne ikke konvertere fil/mappenavnet \"%s\" til utf-8 (%s). Enten er det formodede filesystemsencoding \"%s\" forkert, eller også indeholder filnavnet forbudte karakterer."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Fil/mappenavnet \"%s\" indeholder reserverede unicode-værdier, som ikke svarer til skrifttegn."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Kunne ikke læse mappe "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Kunne ikke status "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "fjerner %s (vil gen-tilføje)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**advarsel** torrenten %s er identisk med %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**advarsel** der er fejl i %s"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... succesful"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "fjerner %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "færdig med tjek"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Kunne ikke læse %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Kunne ikke downloade eller åbne \n%s\nPrøv at bruge en webbrowser til at downloade torrent-filen med."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s eller nyere krævet"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "For sent at skifte RawServer-motor, %s har allerede været brugt."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Trackertilmelding stadig ikke afsluttet %d sekunder efter initiering"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Der opstod problemer under oprettelse af forbindelse til tracker, gethostname fejlede - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problem med at forbinde til tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "ukorrekte data fra tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "afvist af tracker - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Afbryder forbindelsen, eftersom torrenten blev afvist af trackeren, mens ingen peers var tilsluttet. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Meddelelse fra trackeren: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "advarsel fra trackeren - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Trackerless opslag fejlede: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "ukorrekt metainfo - ikke en ordbog"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "ukorrekt metainfo - ukorrekt del-nøgle"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "ukorrekt metainfo - illegal del-længde"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "ukorrekt metainfo - ukorrekt navn"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "navn %s afslået af sikkerhedsgrunde"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "blanding af enkelt- og multiple filer"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "ukorrekt metainfo - forkert længde"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "ukorrekt metainfo - \"files\" er ikke en filliste"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "ukorrekt metainfo - filindtastning skal være en dict"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "ukorrekt metainfo - forkert sti"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "ukorrekt metainfo - forkert stimappe"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "sti %s afslået af sikkerhedsgrunde"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "ukorrekt metainfo - sti optræder i dublet"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "ukorrekt metainfo - navn brugt både som filnavn og undermappe-navn"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "ukorrekt metainfo - forkert objekt-type"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "ukorrekt metainfo - ingen streng m/ URL-tilmelding"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "ukorrekt metainfo - node er ikke en liste"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "ukorrekt metainfo - node liste må kun indeholde to elementer"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "ukorrekt metainfo - node vært skal være en streng"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "ukorrekt metainfo - node port skal være et helt tal"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "fejlårsag skal være en streng"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "advarsel skal være en streng"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr "ukorrekt data i peerliste - peerliste skal være XXX"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "ukorrekt data i peerliste - peer ip skal være en streng"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "ukorrekt data i peerliste - peer port skal være et helt tal"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ukorrekt data i peerliste - ukorrekt peer-id"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ugyldig peer-oversigt"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "ugyldigt tilmeldings-ínterval"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "ugyldigt minimums tilmeldings-interval"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ugyldig tracker-id"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ugyldigt antal peers"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ugyldigt antal seeds"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ugyldigt \"last\" entry"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Anvendelse: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIONS][TORRENTDIRECTORY]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Hvis et non-option argument er til stede, antager det værdien\n af optionen torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIONS] [TORRENTFILES]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIONS] [TORRENTFILE]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTION] TRACKER_URL FILE [FILE]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenter er -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (standard er "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "ukendt nøgle "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parameter passerede ind ved slutningen uden værdi"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "kommandolinie-analyse fejlede ved "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Optionen %s er påkrævet."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Må understøtte mindst %d argumenter."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "For mange argumenter - %d max."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "forkert format for %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Portnummer der skal lyttes på."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fil at gemme seneste download-info i"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "time-out for forbindelser, der lukker"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekunder mellem auto-gem af dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "antal sekunder mellem downloadere, der udløber"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "antal sekunder downloadere bør vente mellem gen-tilmeldinger"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"stanardantal peers der skal sendes en infobesked til, hvis klienten ikke specificerer et antal"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "ventetid mellem tjek for at se om nogen forbindelser er timed-out"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hvor mange gange, der skal tjekkes om en downloader er bag en NAT (0 = tjek ikke)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "om der skal føres protokol over nat-tjek-resultater"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "mindste tid, der skal være gået siden sidste tømning, før en ny gøres"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr "mindste tid i sekunder, før en cache regnes for statisk og tømmes"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"tillad kun downloads af .torrents i denne mappe (i tilfælde af gentagelser i undermapper under mapper, der ikke selv rummer .torrentfiler). Hvis valgt, vil torrents i denne mappe fremgå af infopage/scrape, hvad enten de har peers eller ej"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"tillad særlige nøgler i torrents i allowed_dir at påvirke trackeradgang"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "om logfilen skal genåbnes, ved modtagelse af et HUP-signal"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr "om der skal vises en infoside, når trackerens rodmappe er aktiv"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "den URL som infosiden skal viderestille til"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "om navne fra tilladt bibliotek skal vises"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"x-icon-datafilen, som skal returneres når en browser spørger efter favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorér ip GET-parameteret fra maskiner, som ikke findes på lokal netværks-IP'er (0 = aldrig, 1 = altid, 2 = ignorér, hvis NAT-tjek ikke er aktivt). HTTP-proxyheadere, der videregiver adresser på originale klienter, behandles som --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "fil, som trackerloggen skal skrive til, brug - for stdout (standard)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"anvend med allowed_dir; tilføjer en /file?hash={hash} url, som tillader brugere at downloade torrent-filen"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"behold døde torrents, efter at de udløber (så de stadig fremgår af din /scrape og hjemmeside). Har kun betydning, hvis allowed_dir ikke er valgt"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "scrape adgang tilladt (kan være ingen, valgt eller fuld)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maksimalt antal peers, der skal uddeles til, når der forespørges"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"din fil findes måske et andet sted i universet\nmen desværre ikke her\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**advarsel** angivet favicon fil -- %s -- findes ikke."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**advarsel** statefile %s er defekt; nulstiller"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Log påbegyndt: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**advarsel** kunne ikke omstille stdout til logfil: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log genåbnet: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**advarsel** kunne ikke genåbne logfil"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "angivet scrape-funktion er ikke tilgængelig med denne tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "fuldstændig scrape-funktion er ikke tilgængelig med denne tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "get-funktionen er ikke tilgængelig med denne tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Udbedte download er ikke godkendt til brug med denne tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "kør uden argumenter for parameter beskrivelse"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Lukker ned: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Den samme torrent kan ikke startes to forskellige steder fra"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Skjul %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Vis %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "ikke en korrekt bencoded tekst"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "forkert bencoded værdi (data efter korrekt præfiks)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport mindre end minport - ingen porte at tjekke"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Kunne ikke åbne en lyttende port: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Kunne ikke åbne en lyttende port: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Tjek omfanget af dine portindstillinger."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Første opstart"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kunne ikke åbne fastresume data: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Vil udføre fuldstændig hash-tjek."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "delen %d fejlede under hashtjek, henter den igen"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Forsøg at downloade en trackerless torrent med trackerless klient slået fra."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "download fejlede: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Fejl: Ingen plads tilbage på disken, eller kan ikke skabe så stor en fil:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "aborteret af IO fejl: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "aborteret af OS-fejl: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "aborteret af intern undtagelse: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Yderligere fejl under nedlukning på grund af fejl: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Kunne ikke fjerne fastresume-fil efter fejl:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "seeder"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Kunne ikke skrive fastresume-data: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "afslut"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Dette er tilsyneladende en gammel version af Python, som ikke understøtter autosporing af filesystem encoding. Erstatter med 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python magtede ikke at autospore filesystem encoding. Bruger 'ascii' i stedet."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Filsesystemstegnsæt '%s' understøttes ikke. Bruger 'ascii' i stedet."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Ukorrekt fil-sti komponent: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denne .torrentfil er genereret af et defekt program og rummer ukorrekt encoded filnavne. Nogle eller alle filnavne kan synes anderledes end, hvad skaberen af .torrentfilen havde tænkt sig."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denne .torrentfil er genereret af et defekt program og rummer ukorrekte tegnværdier, som ikke modsvarer faktiske tegn. Nogle eller alle filnavne kan optræde forskelligt fra, hvad skaberen af .torrentfilen havde tænkt sig."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Denne .torrentfil er genereret af et defekt program og rummer ukorrekt encoded filnavne. De anvendte navne kan dog stadig være korrekte."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Karaktersættet bruget på det lokale filesystem (\"%s\") kan ikke fremvise alle tegnene, der benyttes i filnavne(t/ne) i denne torrent. Filnavne er blevet ændret i forhold til originalen."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Windowsfilsystemet kunne ikke håndtere nogle af de tegn der bliver brugt i filnavne(ne). Filnavne er blevet gendannet fra originalen."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Denne .torrentfil er genereret af et defekt program og rummer mindst 1 fil med utilladelig fil- eller mappenavn. Men eftersom alle sådanne filer annoteredes som havende længde 0, blev disse filer blot ignoreret."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Ikkehåndteret kommando: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kunne ikke oprette kontrolsokkel: allerede i brug"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Kunne ikke fjerne gammelt kontrolsokkel-filnavn:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kunne ikke oprette kontrolsokkel: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Kunne ikke sende kommando: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Global mutex allerede oprettet."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Kunne ikke finde en åben port!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Kunne ikke oprette program-data mappe!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Kunne ikke anskaffe global mutex lås for kontrolsokkelfil!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "En tidligere version af BT blev ikke fjernet ordentligt. Fortsætter."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "En anden udgave af BT kører allerede, men \"%s\" eksisterer ikke.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Gætter på porten."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port fundet: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Kunne ikke finde port."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC Status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE Conversation forbundet."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "kunne ikke afregistrere eller lukke serversocket: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "mistet server-sokkel"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Fejl ved håndtering af godkendt forbindelse: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Må afslutte på grund af TCP stack-kollaps. Se venligst FAQ ved %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "modtog ukendt beskedtype"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "timeout"
+
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..bd38dae
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,2880 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 20:12-0800\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: St0fF <bugs (at) bittorrent (dot) com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %s oder höher installieren"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "Abgelehnt, nicht verwenden"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Die Kommunikation mit einem anderen %s Prozess ist fehlgeschlagen, aber ein Prozess scheint aktiv zu sein."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+" Durch das Schließen aller Fenster von %s kann das Problem unter Umständen behoben werden."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s wird bereits ausgeführt"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Die Kommunikation mit einem anderen %s Prozess ist fehlgeschlagen."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s oder neuer wird benötigt"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "Ziehen, um neu zu ordnen"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Rechtsklick, um das Menü zu öffnen"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "DFÜ"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Kabel ab 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Kabel ab 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL ab 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Geben Sie die URL für den Torrent ein"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Geben Sie die URL einer Torrent-Datei ein, um sie zu öffnen:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximale Upload-Geschwindigkeit:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Alle laufenden Torrents anhalten"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Download fortsetzen"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Neue %s Version ist verfügbar"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Eine neuere Version von %s ist verfügbar.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Sie benutzen %s, die neue Version ist %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Sie können jederzeit die neueste Version von \n%s erhalten"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "_Später herunterladen"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "_Jetzt herunterladen"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Später _erinnern"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Über %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s konnte nicht geöffnet werden"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Spenden"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Aktivitäten-Logdatei"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Logdatei speichern in:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Logdatei gespeichert"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Logdatei geleert"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Einstellungen"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Allgemein"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "BitTorrent beim Start von Windows aufrufen"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "In die Taskleiste minimieren"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr ""
+"Der Text in der Fortschrittsanzeige ist immer schwarz\n(erfordert Neustart)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Speicherung wird ausgeführt"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Neue Downloads speichern in:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Ändern..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Jedes Mal nachfragen, wo der Download gespeichert werden soll"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Download wird ausgeführt"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Beim Starten eines neuen Torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Einen anderen laufenden Torrent unterbrechen"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Keine laufenden Torrents unterbrechen"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Jedes Mal nachfragen"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seed-Vorgang"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Komplette Torrents seeden: bis entweder die Verteilrate [_] Prozent beträgt oder [_] Minuten abgelaufen sind."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Auf unbestimmte Zeit seeden"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Letzten fertig gestellten Torrent seeden: bis die Verteilrate [_] Prozent beträgt."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Netzwerk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Nach einem verfügbaren Port suchen:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Bei folgendem Port beginnen: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Automatisches Port-Mapping aktivieren"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP-Adresse, die dem Tracker übermittelt wird:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Dies funktioniert nur, wenn Sie sich\nim selben lokalen Netzwerk wie der Tracker befinden)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"WARNUNG: Änderungen an diesen Einstellungen können dazu führen,\ndass %s nicht richtig funktioniert."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Option"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Wert"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Erweitert"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Standard-Downloadverzeichnis wählen"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Folgende Verknüpfung konnte nicht entfernt werden: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Dateien in \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Niemals"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Niemals herunterladen"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Normal downladen"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Zuerst"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Zuerst downloaden"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Dateiname"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Länge"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Heruntergeladen"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "niemals"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "zuerst"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers für \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-Adresse"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Verbindung"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s Download"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s Upload"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB heruntergeladen"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB hochgeladen"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% fertig"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s - geschätzte Downloadgeschwindigkeit vom Peer"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer-ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessiert"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Gedrosselt"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Abgewiesen"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistischer Upload"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "entfernt"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "fehlerhafter Peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d OK"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d fehlerhaft"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "verboten"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "OK"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Information für \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrent-Name:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(trackerloser Torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL bekannt geben:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", in einer Datei"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", in %d Dateien"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Gesamtgröße:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Teile:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informationshash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Speichern in:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Dateiname:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Ordner öffnen"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "_Datei-Liste anzeigen"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent-Informationen"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Torrent entfernen"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Torrent abbrechen"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", wird verteilt für %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", wird für unbestimmte Zeit verteilt."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Fertig, Share-Verhältnis: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Fertig, %s hochgeladen"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Fertig"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent-_Informationen"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Datei-Liste"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peer-Liste"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "Ort _ändern"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Für unbestimmte Zeit verteilen"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_Neu starten"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Fertig stellen"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Entfernen"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Abbrechen"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Sind Sie sicher, dass Sie \"%s\" entfernen wollen?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Ihr Share-Verhältnis für diesen Torrent ist %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Sie haben %s zu diesem Torrent hochgeladen. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Diesen Torrent entfernen?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Fertig gestellt"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "In die Liste ziehen, um zu verteilen"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Fehlgeschlagen"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "In die Liste ziehen, um fortzufahren"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Warten"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Angehalten"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Aktiv"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Momentaner Upload: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Momentaner Download: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Vorhergehender Upload: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Vorhergehender Download: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Share-Verhältnis: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s Peers, %s Seeds. Insgesamt vom Tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Verteilte Kopien: %d; Nächste: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Teile: %d insgesamt, %d fertig, %d teilweise, %d aktiv (%d leer)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d fehlerhafte Teile + %s in verworfenen Anfragen"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% fertig, %s verbleibend"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Download-Rate"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Upload-Rate"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Nicht verfügbar"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s gestartet"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Beenden"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "Be_enden"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Torrent-Datei öffnen"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Torrent-_URL öffnen"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "_Neuen Torrent erstellen"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Anhalten/Abspielen"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "_Fertige Torrents einblenden/ausblenden"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Fenstergröße ändern"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Einstellungen"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Über"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Spenden"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Datei"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ansicht"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Torrent-Dateien suchen"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(gestoppt)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(mehrfach)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Das Installationsprogramm für %s wird bereits heruntergeladen"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Neue %s jetzt installieren?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"Möchten Sie %s beenden und statt dessen die neue Version %s installieren?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr ""
+"Die Hilfe für %s befindet sich hier:\n%s\nMöchten Sie sie jetzt aufrufen?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Wollen Sie die Onlinehilfe besuchen?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Es ist ein fertiger Torrent in der Liste. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Möchten Sie ihn entfernen?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Es sind %d fertige Torrents in der Liste. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Möchten Sie sie alle entfernen?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Alle fertigen Torrents entfernen?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Keine fertigen Torrents"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Es gibt keine fertigen Torrents, die entfernt werden können."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Torrent öffnen:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Speicherort ändern für "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Datei existiert bereits!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+"\"%s\" existiert bereits. Möchten Sie einen anderen Dateinamen auswählen?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Speicherort für "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Das Verzeichnis ist bereits vorhanden!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" ist bereits vorhanden. Soll ein identisches zweites Verzeichnis innerhalb des vorhandenen Verzeichnisses erstellt werden?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globale Meldung): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Fehler"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Es sind mehrere Fehler aufgetreten. Klicken Sie auf OK, um die Protokolldatei anzusehen."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Aktiven Torrent stoppen?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Sie starten jetzt \"%s\". Möchten sie außerdem einen laufenden Torrent unterbrechen?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Haben Sie gespendet?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Willkommen zu der neuen Version von %s. Haben Sie gespendet?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Danke!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Danke für Ihre Spende! Um noch einmal zu spenden, wählen Sie \"Spenden\" aus dem Menü \"Hilfe\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+"TorrentQueue konnte nicht gestartet werden, siehe die Fehlermeldungen oben."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s Torrent-Datei wird erstellt von %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Torrent-Datei für diese/s Datei/Verzeichnis erstellen:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Wählen..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Verzeichnisse werden zu Batch-Torrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Teil-Größe:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "_Tracker benutzen:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "_DHT benutzen:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Knoten (optional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentare:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Erstellen"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Torrents werden erstellt..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Größe der Dateien wird überprüft..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Seeden starten"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "erstellen"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Fertig."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Fertig mit dem Erstellen der Torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Fehler!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Fehler beim Erstellen der Torrents: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s oder neuer erforderlich"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d Tage"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 Tag %d Stunden"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d Stunden"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d Minuten"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d Sekunden"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 Sekunden"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hilfe"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Häufig gestellte Fragen (FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Los"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Wählen Sie einen vorhandenen Ordner aus..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Neuen Ordner erstellen..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Datei wählen"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Ordner wählen"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Gespeicherter Status konnte nicht geladen werden: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Zustand der Benutzeroberfläche konnte nicht gespeichert werden: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Unzulässiger Inhalt der Status-Datei "
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Fehler beim Lesen der Datei \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "Status kann nicht vollständig wiederhergestellt werden "
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ungültige Status-Datei (doppelter Eintrag) "
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+"Fehlerhafte Daten in der Datei \"%s\", Torrent kann nicht wiederhergestellt werden."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(Infohash-Konflikt)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ungültige Status-Datei (fehlerhafter Eintrag)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Status-Datei für Benutzeroberfläche fehlerhaft"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Falsche Version der Status-Datei für die Benutzeroberfläche"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Version der Status-Datei für die Benutzeroberfläche wird nicht unterstützt (von einer neueren Client-Version?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Zwischengespeicherte %s Datei konnte nicht gelöscht werden: "
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Dies ist keine gültige Torrent-Datei. (%s) "
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+"Dieser Torrent (oder einer mit dem gleichen Inhalt) ist bereits aktiv. "
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Dieser Torrent (oder einer mit dem gleichen Inhalt) wartet schon. "
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent in unbekanntem Zustand %d "
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Datei konnte nicht geschrieben werden "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "Torrent wird beim Neustart des Clients nicht korrekt neu gestartet"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Nicht mehr als %d Torrents können gleichzeitig aktiviert werden. Weitere Informationen finden Sie im Bereich für häufig gestellte Fragen unter %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Der Torrent wird nicht gestartet, da schon andere Torrents auf den Start warten und dieser Torrent bereits die eingestellten Voraussetzungen zum Abruch des Seed-Vorgangs erfüllt."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Der Torrent wird nicht gestartet, da er bereits die eingestellten Voraussetzungen erfüllt, bei denen der Seed-Vorgang für den letzten vollständigen Torrent gestoppt wird."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Letzte Version von %s konnte nicht abgerufen werden"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Neue Versions-Zeichenkette von %s konnte nicht ausgewertet werden"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Es konnte kein geeigneter Speicherort für das %s %s Installationsprogramm gefunden werden."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Keine Torrent-Datei für das %s %s Installationsprogramm verfügbar."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"%s %s Installationsprogramm ist wahrscheinlich unvollständig, fehlt oder ist beschädigt."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+"Das Installationsprogramm kann auf diesem Betriebssystem nicht gestartet werden"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Keine Torrent-Dateien"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Download wird gestartet"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normaler Betrieb"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Downloads erfolgen möglicherweise langsam:\nWahrscheinlich behindert durch Firewall/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Netzwerkverbindung prüfen"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"Verzeichnis, in dem veränderliche Daten wie Schnellwiederaufnahme-Informationen und der Status der Benutzeroberfläche gespeichert werden. Vorgegeben ist das Unterverzeichnis \"Data\" im \"config\"-Ordner von BitTorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"Zeichencodierung, die im lokalen Dateisystem verwendet wird. Bei fehlender Angabe erfolgt automatische Erkennung. Die automatische Erkennung funktioniert nicht mit Python-Versionen, die älter sind als Version 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO-Sprachen-Code, der benutzt werden soll"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP-Adresse, die an den Tracker übermittelt wird (funktioniert nicht, wenn Sie sich nicht im gleichen lokalen Netzwerk wie der Tracker befinden)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"Global sichtbare Port-Nummer - falls nicht mit der Port-Nummer identisch, auf der der Client lokal lauscht"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"Niedrigster Port, auf dem gelauscht werden soll (falls nicht verfügbar, wird der nächste gewählt)"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "Höchster Port, auf dem gelauscht werden soll"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP-Adresse, die lokal verwendet werden soll"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "Sekunden zwischen dem Auffrischen der angezeigten Informationen"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "Anzahl der Minuten, bevor weitere Peers angefordert werden"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+"Mindestanzahl der Peers, ab der keine weiteren Verbindungen angefordert werden"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"Anzahl der Peers, ab der keine neuen Verbindungen mehr eingeleitet werden"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maximale Anzahl der ausgehenden unvollständigen Verbindungen"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maximale Anzahl erlaubter Verbindungen, ab der neu eingehende Verbindungen sofort geschlossen werden"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "Sollen Hashes auf dem Datenträger überprüft werden?"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "Maximale Upload-Geschwindigkeit in KB/s; 0 bedeutet unbegrenzt"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "Die Anzahl der Uploads mit besonders optimistischen Unchokes"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"Maximale Anzahl der gleichzeitig geöffneten Dateien bei einem Torrent mit mehreren Dateien. Dies wird verwendet, um einen Mangel an Dateideskriptoren zu vermeiden; 0 bedeutet unbegrenzt."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Trackerlosen Client initialisieren. Diese Option wird zum Herunterladen trackerloser Torrents benötigt."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "Länge der Pause in Sekunden zwischen Keepalive-Anfragen"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "Anzahl der Bytes, die pro Anfrage abgefragt werden."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"Maximal akzeptierte Vorspannlänge der Verbindung - höhere Werte führen zum Verbindungsabbruch."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"Sekunden, die abzuwarten sind, bis die Sockets geschlossen werden, die nichts empfangen haben"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"Sekunden, die nach dem Timeout von Verbindungen verstreichen müssen, bevor eine erneute Überprüfung gestartet wird"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"Maximale Paketlänge, die an Peers gesendet wird; Verbindung schließen,wenn eine darüber hinausgehende Anfrage eingeht"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"Maximaler Zeitraum, nachdem die aktuellen Upload- und Download-Raten geschätzt werden"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "Maximaler Zeitraum zur Schätzung der aktuellen Seed-Rate"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"Maximaler Zeitraum, der abgewartet wird, bevor Ankündigungen erneut gesendet werden, nachdem sie fehlgeschlagen sind"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"Sekunden, die auf über eine Verbindung hereinkommende Daten gewartet wird, bevor angenommen wird, dass es sich um eine zeitweise gedrosselte Verbindung handelt"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"Anzahl der Downloads, ab der die Downloadreihenfolge nicht mehr vom Zufall gesteuert, sondern das seltenste Teil zuerst geladen wird"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+"Anzahl der Bytes, die gleichzeitig in Netzwerkpuffer geschrieben werden."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"Weitere Verbindungen zu Adressen mit defekten oder absichtlich bösartigen Peers, die inkorrekte Daten senden, abweisen"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+"Keine Verbindung zu mehreren Peers herstellen, die dieselbe IP-Adresse haben"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"TOS-Option für Peer-Verbindungen auf diesen Wert einstellen, wenn nicht gleich null"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"Umgehung für einen Fehler in der BSD libc einschalten, der die Dateizugriffe sehr verlangsamt."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "Adresse des zu benutzenden HTTP-Proxy-Servers für Tracker-Verbindungen"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "Verbindungen mit RST schließen und TCP TIME_WAIT-Status vermeiden"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Steuert die Verwendung der \"Twisted\"- Netzwerkbibliotheken für Netzwerkverbindungen: 1 - Twisted verwenden, 0 - Twisted nicht verwenden, -1 - automatische Auswahl mit Vorzug für Twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"Dateiname (für einzelne Torrents) oder Verzeichnisname (für Batch-Torrents), unter dem der Torrent zu speichern ist; übergeht den Standardnamen im Torrent. Schauen Sie auch unter --save_in nach; wenn nichts festgelegt ist, wird der Benutzer nach dem Speicherort gefragt"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "Erweiterte Benutzeroberfläche anzeigen"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"Maximale Anzahl der Minuten, bis der Seed-Vorgang für einen kompletten Torrent gestoppt wird"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"Minimales Upload/Download-Verhältnis in Prozent, das erreicht werden soll, bevor der Seed-Vorgang gestoppt wird. 0 = unendlich."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"Minimales Upload/Download-Verhältnis in Prozent, das erreicht werden soll, bevor der Seed-Vorgang für den letzten Torrent gestoppt wird. 0 = unendlich."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seed-Vorgang für jeden fertigen Torrent auf unbestimmte Zeit fortsetzen (bis er vom Benutzer abgebrochen wird)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seed-Vorgang für den letzten Torrent auf unbestimmte Zeit fortsetzen (bis er vom Benutzer abgebrochen wird)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "Downloader im Pausemodus starten"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"Gibt an, wie die Anwendung reagieren soll, wenn der Benutzer versucht, einen anderen Torrent manuell zu starten: \"ersetzen\" = aktiven Torrent immer durch neuen Torrent ersetzen; \"hinzufügen\" = aktiven Torrent immer parallel ergänzen; \"fragen\" = immer Benutzer fragen."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "BitTorrent minimiert starten"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"Version überschreiben, die durch HTTP-Versionsprüfung bereitgestellt wurde, und Debugging-Modus für die Versionsprüfung aktivieren"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"aktuelle Vesion überschreiben, die bei Versionsprüfung verwendet wird, und Debugging-Modus für die Versionsprüfung aktivieren"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"Fenstergröße und -position angeben, im Format: BREITExHÖHE+X-VERSATZ+Y-VERSATZ"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"Dateiname (für Einzel-Torrents) oder Verzeichnisname (für Batch-Torrents), unter dem Torrents gespeichert werden. Dies überschreibt den Standardnamen im jeweiligen Torrent. Siehe auch unter --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"Legt die maximale Zahl der gleichzeitig erlaubten Uploads fest. Eine \"1\" bedeutet eine (hoffentlich) sinnvolle Anzahl von Uploads, basierend auf --max_upload_rate. Die automatischen Werte sind nur dann von Bedeutung, wenn ein Torrent zur Zeit läuft."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"Lokales Verzeichnis, in dem der Inhalt des Torrents gepeichert wird. Die Datei (Einzel-Torrents) oder das Verzeichnis (Batch-Torrents) werden in diesem Verzeichnis unter Benutzung des in der Torrent-Datei vorgegebenen Standardnamens erstellt. Siehe auch unter --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"Legt fest, ob der Benutzer nach einem Speicherort gefragt wird, an dem die Download-Dateien gespeichert werden"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"Lokales Verzeichnis, in dem die Torrents gespeichert werden, unter Benutzung eines Namens, der von --saveas_style festgelegt wird. Wenn keine Angabe vorhanden ist, wird jeder Torrent im Verzeichnis der entsprechenden Torrent-Datei gespeichert"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+"Legt fest, wie oft das Torrent-Verzeichnis neu gescannt werden soll, in Sekunden"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"Wartezeit in Sekunden; ein Torrent, der bemerkt wurde, sollte erst nach Ablauf dieser Wartezeit gestartet werden, um ein Rennen mit dem Tracker zu vermeiden"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Legt fest, wie die Torrent-Downloads benannt werden sollen: 1: Namen DER Torrent-Datei verwenden (ohne \".torrent\"); 2: Namen verwenden, der IN der Torrent-Datei enthalten ist; 3: Verzeichnis mit dem Namen DER Torrent-Datei erstellen (ohne \".torrent\") und die Daten in diesem Verzeichnis unter Benutzung des Namens speichern, der IN der Torrent-Datei enthalten ist; 4: Wenn der Name DER Torrent-Datei (ohne \".torrent\") und der Name, der IN der Torrent-Datei enthalten ist, identisch sind, diesen Namen verwenden (Stil 1/2); ansonsten ein Zwischen-Verzeichnis wie in Stil 3 erstellen; ACHTUNG: Bei den Optionen 1 und 2 besteht die Möglichkeit, dass Dateien ohne Warnung überschrieben werden und Sicherheitsprobleme entstehen."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"Legt fest, ob der volle Dateipfad oder die Torrent-Inhalte für jeden Torrent angezeigt werden"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "Verzeichnis, in dem nach .torrent-Dateien gesucht wird (semi-rekursiv)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+"Legt fest, ob Statusinformationen auf der Standardausgabe angezeigt werden sollen"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "Legt fest, auf welche Zweierpotenz die Teilgröße gesetzt wird"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "Standard-Tracker-Name"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"Wenn falsch, dann trackerlosen Torrent erzeugen, anstatt die URL anzukündigen; zuverlässigen Knoten in Form von <ip>:<port> oder eine leere Zeichenkette verwenden, um Knoten von der Routing-Tabelle zu ziehen"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "Download abgeschlossen!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<unbekannt>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "fertig in %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "Download erfolgreich"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB Upload/ %.1f MB Download)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB Upload/ %.1f MB Download)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d zur Zeit sichtbar, und %d verteilte Kopien (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d verteilte Kopien (nächste: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d zur Zeit sichtbar"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FEHLER:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "Wird gespeichert:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "Dateigröße:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "Prozent fertig: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "Verbleibende Zeit: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "Herunterladen nach: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "Download-Datenrate: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "Upload-Datenrate: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "Verteilungs-Bewertung: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "Seed-Status: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "Peer-Status: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Sie können nicht beides angeben: --save_as und --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "Wird heruntergefahren"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Fehler beim Zugriff auf die Konfiguration: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Fehler beim Zugriff auf die .torrent-Datei: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "Sie müssen eine .torrent-Datei angeben"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Textmodus-Initialisierung der grafischen Benutzeroberfläche schlug fehl. Es kann nicht fortgesetzt werden."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Diese Download-Oberfläche benötigt das Standard-Python-Modul \"curses\", welches leider für Windows direkt nicht verfügbar ist. Es wäre aber für den Cygwin-Port von Python, der auf allen Win32-Systemen verfügbar ist (www.cygwin.com), erhältlich."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+"Sie können immer noch die \"Bittorrent-Console\" zum Herunterladen benutzen."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "Datei:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "Größe:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "Ziel:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "Fortschritt:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "Status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "Herunterlade-Geschwindigkeit:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "Hochlade-Geschwindigkeit:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "sharing:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "Verteilungen:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "Peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d zur Zeit sichtbar, plus %d verteilte Kopien(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "Fehler:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "Fehler:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Hochladen Herunterladen Komplett Geschwindigkeit"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "Download von %d Teilen, davon %d fragmentiert, %d von %d Teile fertig"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Diese Fehler traten während der Ausführung auf:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Benutzung: %s TRACKER_URL[TORRENTDATEI [TORRENTDATEI ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "alte Ankündigung für %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "keine Torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEMFEHLER - AUSNAHME ERZEUGT"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Warnung: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " ist kein Ordner"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+"Fehler: %s\nStarten Sie ohne Argumente für eine Erklärung der Parameter"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nAUSNAHME:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Sie können immer noch \"btdownloadheadless.py\" zum Herunterladen benutzen."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "Verbinde mit Peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Geschätzte Ankunft in %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Größe"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Hochgeladen"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Gesamt:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+" (%s) %s - %s Peers %s Verteilungen %s vert. Kopien - %s hoch %s herunter"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "Fehler: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nStarten Sie ohne Argumente für eine Erklärung der Parameter"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "Optionaler klarlesbarer Kommentar für .torrent-Datei"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "Optionale Zieldatei für Torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dekodiere %s Metainformationsdateien"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Benutzung: %s [TORRENTDATEI [TORRENTDATEI ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "Metainformationsdatei: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "Informations-Hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "Dateiname: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "Dateigröße:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "Dateien: "
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "Verzeichnisname: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "Archivgröße:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "Tracker-Ankündigungs-URL: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "Trackerlose Knoten:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "Kommentar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Mo"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Di"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mi"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Do"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Fr"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sa"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "So"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mär"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dez"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Komprimiert: %i Unkomprimiert: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Konnte Optionen nicht dauerhaft speichern:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Datei %s gehört zu einem anderen laufenden Torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Datei %s existiert schon, aber ist keine reguläre Datei"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Kurzer Lesevorgang - hat vielleicht etwas die Dateien verkürzt?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Nicht unterstütztes Schnellwiederaufahme-Dateiformat - vielleicht von einer anderen Version des Programms?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Konnte auf Schnellwiederaufahme-Daten nicht zugreifen: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() sollte nur einmal pro Reactor aufgerufen werden."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() gibt möglicherweise kein Resultat zurück, solange keine Aktivität vorliegt und könnte einen anderes Ereignis als das gewünschte bearbeiten. Bitte listen_forever() benutzen."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "fehlerhafte Daten in der Antwortdatei - insgesamt zu klein"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "fehlerhafte Daten in der Antwortdatei - insgesamt zu groß"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "prüfe existierende Datei"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 oder Schnellwiederaufahme-Information entspricht nicht dem Dateistatus (fehlende Daten)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Fehlerhafte Schnellwiederaufahme-Informationen (Dateien enthalten mehr Daten)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Fehlerhafte Schnellwiederaufahme-Informationen (unerlaubter Wert)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"fehlerhafte Daten auf der Festplatte - haben Sie vielleicht zwei Instanzen gestartet?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"Datei in der Start-Mitteilung zwar komplett, der Teil hat die Hash-Prüfung aber nicht bestanden"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Konnte keinen Signal-Trainer setzen: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "verloren: \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "hinzugefügt: \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "warte auf Hash-Prüfung"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "lade herunter"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "neues Einlesen der Konfigurationsdatei"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Sie können keinen .torrent-Dateinamen angeben, während der gleichzeitigen Erstellung von Mehrfach-Torrents"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"Die Dateisystemkodierung \"%s\" wird von dieser Version nicht unterstützt"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Konnte Datei-/Verzeichnisnamen \"%s\" nicht umwandeln in utf-8 (%s). Entweder die angenommene Dateisystemkodierung ist falsch \"%s\" oder der Dateiname enthält ungültige Bytes."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Datei-/Verzeichnisname \"%s\" enthält reservierte Unicodewerte, die keinem Zeichen entsprechen."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Konnte nicht auf das Verzeichnis zugreifen "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Keine Statistik möglich "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "entferne %s (wird erneut hinzugefügt)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**Warnung** %s ist ein doppeltes Torrent für %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**Warnung** %s hat Fehler"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... erfolgreich"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "entferne %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "Überprüfung fertiggestellt"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Konnte nicht auf %s zugreifen"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Konnte\n%s\nweder herunterladen noch öffnen.Versuchen Sie, die .torrent-Datei mit einem Web-Browser herunterzuladen."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Zu spät, um die RawServer-Basis umzuschalten, %s wurde schon benutzt."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Tracker-Ansage ist nach %d Sekunden immer noch nicht abgeschlossen"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Problem sich mit den Tracker zu verbinden. Die Funktion gethostbyname ist fehlgeschlagen -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problem beim Verbinden zum Tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "fehlerhafte Daten vom Tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "vom Tracker zurückgewiesen - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Der Torrent wird abgebrochen, da er vom Tracker zurückgewiesen wurde, weil er zu keinem Peer verbunden ist. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Nachricht vom Tracker: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "Warnung vom Tracker - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "falsche Metainfo - kein Wörterbuch"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "falsche Metainfo - falscher Teile-Schlüssel"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "Fehlerhafte Metainformation - ungültige Teil-Grösse"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "Fehlerhafte Metainformation - fehlerhafter Name"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "Name %s ist aus Sicherheitsgründen nicht erlaubt"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "Einzel-/Mehrfachdateimix"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "Fehlerhafte Metainformation - fehlerhafte Länge"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "Fehlerhafte Metainformation - \"dateien\" ist keine Liste von Dateien"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "Fehlerhafte Metainformation - fehlerhafter Pfad"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "Fehlerhafte Metainformation - fehlerhaftes Verzeichnis"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "Pfad %s ist aus Sicherheitsgründen nicht erlaubt"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "Fehlerhafte Metainformation - doppelter Pfad"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"Fehlerhafte Metainformation - Name sowohl als Datei-, als auch als Verzeichnisname benutzt"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "Fehlerhafte Metainformation - falscher Objekttyp"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "Fehlerhafter Metainformation - kein Ankündigungs-URL-Text"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "Warnung die Nachricht muss eine Zeichenfolge sein"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "Ungültige Peer-Liste"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "Ungültiges Aufrufintervall"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "Ungültiges min. Aufrufintervall"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "Ungültige Tracker-Id"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "Ungültiger Peer-Zähler"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "Ungültiger Seed-Zähler"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "Ungültiger \"letzter\" Eintrag"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Benutzung: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIONEN] [TORRENT-VERZEICHNIS]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Wenn ein Argument ohne Optionen vorhanden ist, wird es als Wert der\n torrent_dir Option angenommen.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIONEN] [TORRENTDATEIEN]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIONEN] [TORRENTDATEI]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTION] TRACKER_URL DATEI [DATEI]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "Argumente sind -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (standardmäßig"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "unbekannter Schlüssel"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "am Ende übergebener Parameter ohne Wert"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "Kommandozeilenüberprüfung fehlgeschlagen bei"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Option %s wird benötigt."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Es sind mindestens %d Angaben erforderlich."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Zuviele Angaben - %d sind maximal erlaubt."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "Falsches Format von %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port, auf dem gelauscht wird."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "Datei, in der kürzliche Downloader-Informationen gespeichert werden"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+"Die Zeitgrenze für das Schließen der Verbindungen ist überschritten worden"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "Sekunden zwischen dfile speichern"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "Sekunden zwischen dem Verfallen der Downloader"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "Sekunden, die Downloader zwischen Wiederankündigungen warten sollen"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"legt die Zahl der Peers fest, an die eine Info-Nachricht geschickt wird, wenn der Client nicht die Anzahl bestimmt"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"Zeit, die gewartet werden soll, bis wieder überprüft wird, ob Verbindungen abgelaufen sind"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"Anzahl der Versuche des Überprüfens, ob ein Downloader hinter einer NAT ist (0=nicht überprüfen)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"Legt fest, ob Einträge in die Protokolldatei für NAT-Check-Ergebnisse gemacht werden sollen"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "Minimaler Zeitabstand zwischen dem letzten und dem nächsten entfernen"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr "Minimaler Zeitabstand in Sekunden bevor ein Cache betrachtet wird"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"Nur Downloads für Torrents in diesem Ordner (und in Unterordnern von Ordnern die selbst keine .torrent-Dateien haben) erlauben. Wenn ausgewählt, werden Torrents in diesem Ordner auf der Infoseite angezeigt, ob sie Peers haben, oder nicht"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"erlaube spezielle Schlüssel in Torrents in dem erlaubten_Order um Tracker Zugang zu erlangen"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+"ob die Protokolldatei beim Empfang des HUP-Signals wieder geöffnet werden soll"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"ob eine Informationsseite angezeigt werden soll wenn das Hauptverzeichnis des Trackers geladen ist"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "Eine URL, wohin die Info-Seite weitergeleitet werden soll"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "Legt fest, ob Namen der erlaubten Ordner angezeigt werden sollen"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"Datei die X-Icon-Daten enthält um sie zurückzuschicken wenn der Browser favicon.ico anfordert"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignoriere die IP GET-Parameter von Maschinen, die keine lokalen Netzwerk IPs haben (0 = nie, 1 = immer, 2 = ignorieren wenn NAT Kontrolle nicht aktiv ist). HTTP Proxy Headers, die die Adresse des ursprünglichen Klienten wiedergeben, werden genauso behandelt wie --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "Datei um Trackerlogs zu speichern, benutze - für stdout (Standard)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"verwende mit erlaubten_Ornder; fügt eine /file?hash={hash} URL hinzu welche es Benutzern erlaubt die Torrentdatei herunterzuladen"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"behalte tote Torrents nachdem Sie ungültig werden (Sie werden dennoch angezeigt in deiner /scrape und Web-Seite). Nur von Bedeutung wenn der Erlaubte_Ornder nicht gesetzt ist"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "Scrape Zugang erlaubt (kann keiner, spezifisch oder vollständig sein)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "Maximale Anzahl von Peers, die mit jeder Anfrage gesendet werden"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"Ihre Datei mag irgendwo im Universum existieren,\n aber leider nicht hier\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**Warnung** angegebene favicon-Datei -- %s -- existiert nicht."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**Warnung** Statusdatei %s defekt, sie wird zurückgesetzt"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Logdatei gestartet: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**Warnung** konnte stdout nicht zur Logdatei umleiten: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Logdatei wiedergeöffnet:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**Warnung** Konnte die Protokolldatei nicht wiedereröffnen"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "Bestimmte Scrapefunktion ist nicht verfügbar auf diesen Tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "Vollständige Scrapefunktion ist auf diesen Tracker nicht verfügbar."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "Die Hol-Funktion ist bei diesem Tracker nicht verfügbar."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Angeforderter Download ist nicht zur Benutzung dieses Tracker berechtigt."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "ohne Argumente ausführen um Parameter-Erklärungen zu erhalten"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Herunterfahren: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+"Es können keine zwei separate Instanzen des selben Torrents heruntergeladen werden"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Verstecke %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Zeige %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "ungültige kodierte Zeichenfolge"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "ungültiger kodierter Wert (Daten nach gültigem Präfix)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport ist kleiner als minport - keine Ports zum Überprüfen"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Konnte keinen Port zum Lauschen öffnen: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Konnte keinen Port zum Lauschen öffnen: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Überprüfen Sie Ihre Einstellungen zum Port-Bereich."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Erstes Starten"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kann Daten für schnelle Wiederaufnahme nicht laden: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Führt komplette Hash-Prüfung durch."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+"Dateiteil %d wurde bei der Hash-Prüfung als fehlerhaft erkannt, es wird neu heruntergeladen."
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Downloadversuch eines trackerlosen torrents starten, obwohl der trackerlose Client ausgeschaltet ist."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "Download fehlgeschlagen:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Eingabe/Ausgabe-Fehler: kein Platz auf Datenträger oder konnte keine so große Datei erstellen:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "abgebrochen durch Eingabe/Ausgabe-Fehler:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "abgebrochen durch Betriebsystem-Fehler:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "abgebrochen durch interne Ausnahmebedingung:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Zusätzlicher Fehler beim Schließen aufgrund von Fehler:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+"Konnte die Datei zur schnellen Wiederaufnahme nach Fehler nicht entfernen:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "Seeding"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Konnte Daten für schnelle Wiederaufnahme nicht schreiben:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "beenden"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Dies scheint eine alte Python-Version zu sein, die die Dateisystemkodierung nicht selbständig erkennen kann. 'ASCII' wird angenommen."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python konnte die Dateisystemkodierung nicht automatisch feststellen. 'ASCII' wird stattdessen benutzt."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Die Dateisystemkodierung '%s' wird nicht unterstützt. 'ASCII' wird stattdessen verwendet."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Dateipfadkomponente ungültig: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Diese .torrent-Datei wurde mit einem defekten Hilfsprogramm erstellt und enthält fehlerhaft kodierte Dateinamen. Einige oder alle Dateinamen könnten anders sein, als der Autor dies plante."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Diese .torrent-Datei wurde mit einem defekten Hilfsprogramm erstellt und enthält ungültige Zeichen. Einige oder alle Dateinamen könnten anders sein, als der Autor dies plante."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Diese .torrent-Datei wurde mit einem defekten Hilfsprogramm erstellt und enthält fehlerhaft kodierte Dateinamen. Die verwendeten Namen könnten immer noch korrekt sein."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Der Zeichensatz des lokalen Dateisystems (\"%s\") unterstützt nicht alle Zeichen, welche in den Dateinamen dieses Torrents vorkommen. Die Dateinamen wurden entsprechend verändert."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Diese .torrent-Datei wurde mit einem defekten Hilfsprogramm erstellt und enthält mindestens 1 Datei mit fehlerhaftem Datei- oder Verzeichnisnamen. Da diese Dateien behandelt werden als ob sie jeweils eine länge von 0 Bytes hätten, werden sie einfach ignoriert."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Konnte keine Kontrollverbindung erstellen: bereits in Verwendung"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Konnte Dateinamen einer alten Kontrollverbindung nicht löschen:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Konnte keine Kontrollverbindung erstellen:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Konnte keinen Befehl senden:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Ein globaler Mutex wurde schon erstellt."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Konnte keinen offenen Port finden!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Konnte das Datenverzeichnis der Anwendung nicht erstellen!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Konnte keine globale Mutex-Sperre für die Socket-Steuerdatei erhalten!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Eine frühere Instanz von BitTorrent war nicht sauber beendet. Setze fort."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Port konnte nicht gefunden werden."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC Status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "Server-Anschluss verloren"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Fehler bei Behandlung der akzeptierten Verbindung: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Programm wird beendet, weil der TCP-Stack überlaufen ist. Bitte schauen Sie in die FAQ bei %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..18606e8
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,2952 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-07 22:55-0800\n"
+"PO-Revision-Date: 2005-12-13 08:38-0800\n"
+"Last-Translator: Vasilis Dialinos <vdialinos@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:131 BitTorrent/defaultargs.py:233
+#: BitTorrent/defaultargs.py:235 bittorrent-console.py:295
+#: bittorrent-curses.py:430
+msgid "deprecated, do not use"
+msgstr "Ανεπιθύμητο. Παρακαλώ μη χρησιμοποιείτε."
+
+#: bittorrent.py:146
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:148 bittorrent.py:171
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Το πρόβλημα μπορεί να λυθεί, αν κλείσετε όλα τα %s παράθυρα."
+
+#: bittorrent.py:168
+#, python-format
+msgid "%s already running"
+msgstr "%s ήδη σε εξέλιξη."
+
+#: bittorrent.py:170
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:181 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Απαιτείται έκδοση PyGTK %s ή νεότερη"
+
+#: bittorrent.py:198 bittorrent.py:1685
+msgid "drag to reorder"
+msgstr "Σύρετε για επαναδιάταξη"
+
+#: bittorrent.py:199 bittorrent.py:1686
+msgid "right-click for menu"
+msgstr "Kάντε δεξί κλικ για εμφάνιση του μενού"
+
+#: bittorrent.py:205 bittorrent.py:390
+msgid "dialup"
+msgstr "Σύνδεση μέσω τηλεφώνου"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k ανέβασμα"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k ανέβασμα"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL 768k up"
+msgstr "DSL 768k ανέβασμα"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:353
+msgid "Enter torrent URL"
+msgstr "Δώστε την διεύθηνση (URL) του torrent"
+
+#: bittorrent.py:354
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Δώστε την διεύθηνση (URL) για το άνοιγμα αρχείου torrent:"
+
+#: bittorrent.py:410
+msgid "Maximum upload rate:"
+msgstr "Μέγιστη ταχύτητα αποστολής:"
+
+#: bittorrent.py:473
+msgid "Temporarily stop all running torrents"
+msgstr "Παύση όλων των torrents"
+
+#: bittorrent.py:474
+msgid "Resume downloading"
+msgstr "Eπανέναρξη του κατεβάσματος"
+
+#: bittorrent.py:513
+#, python-format
+msgid "New %s version available"
+msgstr "Καινούργια διαθέσιμη έκδοση %s"
+
+#: bittorrent.py:528
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Υπάρχει νέα διαθέσημη έκδοση του %s. \n"
+
+#: bittorrent.py:529
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Χρησιμοποιείτε την %s και η νέα έκδoση είναι %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Μπορείτε να βρείτε την νεότερη έκδοση στο \n"
+" %s"
+
+#: bittorrent.py:537 bittorrent.py:1910
+msgid "Download _later"
+msgstr "Αποφόρτωση_αργότερα"
+
+#: bittorrent.py:540 bittorrent.py:1898
+msgid "Download _now"
+msgstr "Άμεση Αποφόρτωση"
+
+#: bittorrent.py:546
+msgid "_Remind me later"
+msgstr "Υπενθυμίστε το μου αργότερα"
+
+#: bittorrent.py:584
+#, python-format
+msgid "About %s"
+msgstr "Σχετικά με %s"
+
+#: bittorrent.py:599
+msgid "Beta"
+msgstr "Δοκιμαστική έκδοση"
+
+#: bittorrent.py:601
+#, python-format
+msgid "Version %s"
+msgstr "Έκδοση %s"
+
+#: bittorrent.py:617
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Δεν ήταν δυνατό το άνοιγμα %s"
+
+#: bittorrent.py:636
+msgid "Donate"
+msgstr "Κάντε δωρεά"
+
+#: bittorrent.py:656
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Log ενεργειών"
+
+#: bittorrent.py:713
+msgid "Save log in:"
+msgstr "Αποθήκευση του log στο:"
+
+#: bittorrent.py:724
+msgid "log saved"
+msgstr "το log αποθηκεύτηκε"
+
+#: bittorrent.py:779
+msgid "log cleared"
+msgstr "το log διεγράφει"
+
+#: bittorrent.py:809
+#, python-format
+msgid "%s Settings"
+msgstr "%s Ρυθμίσεις"
+
+#: bittorrent.py:821
+msgid "General"
+msgstr "Γενικά"
+
+#: bittorrent.py:824 BitTorrent/defaultargs.py:208
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Τρέξτε το BitTorrent μόλις εκινήσουν τα Windows"
+
+#: bittorrent.py:830 BitTorrent/defaultargs.py:210
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:836
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Το κείμενο ράβδου προόδου είναι πάντα μαύρο\n"
+" (απαιτεί επανεκκίνηση)"
+
+#: bittorrent.py:845
+msgid "Saving"
+msgstr "Αποθηκεύεται"
+
+#: bittorrent.py:847
+msgid "Save new downloads in:"
+msgstr "Αποθήκευση νέων αποφορτώσεων στο:"
+
+#: bittorrent.py:860
+msgid "Change..."
+msgstr "Αλλαγή..."
+
+#: bittorrent.py:866
+msgid "Ask where to save each new download"
+msgstr "Να ερωτάσθε πού να αποθηκευτεί κάθε νέα αποφόρτωση"
+
+#: bittorrent.py:875
+msgid "Downloading"
+msgstr "Αποφορτώνει"
+
+#: bittorrent.py:877
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:886
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:892
+msgid "_Don't stop other running torrents"
+msgstr "Μην σταματήσετε άλλα torrents που εκτελούνται"
+
+#: bittorrent.py:898
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:915
+msgid "Seeding"
+msgstr "Διαμοίραση / Σπορά"
+
+#: bittorrent.py:924
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Διαμοίραση / σπορά torrent: Μέχρι το ποσοστό να φτάσει [_] % ή για [_] "
+"λεπτά, όποιο από τα δυο επέλθει πρώτο."
+
+#: bittorrent.py:968 bittorrent.py:1002
+msgid "Seed indefinitely"
+msgstr "Διαμοίραση/σπορά επ'αόριστον"
+
+#: bittorrent.py:976
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Διαμοίραση/σπορά τελευταίου torrent: Μέχρι το ποσοστό να φτάσει [_] %."
+
+#: bittorrent.py:1014
+msgid "Network"
+msgstr "Δίκτυο"
+
+#: bittorrent.py:1016
+msgid "Look for available port:"
+msgstr "Κοίταξε για διαθέσιμες θύρες:"
+
+#: bittorrent.py:1019
+msgid "starting at port: "
+msgstr "αρχίζοντας απο την θύρα:"
+
+#: bittorrent.py:1032
+msgid "IP to report to the tracker:"
+msgstr "IP για αναφορά στον tracker:"
+
+#: bittorrent.py:1037
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Δεν έχει καμία επίδραση εκτός αν είστε\n"
+" στο ίδιο τοπικό δίκτυο με τον tracker)"
+
+#: bittorrent.py:1054
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"ΠΡΟΣΟΧΗ:Η αλλαγή αυτών των ρυθμίσων\n"
+"μπορεί να αποτρέψει %s από το να λειτουργήσει σωστά."
+
+#: bittorrent.py:1062
+msgid "Option"
+msgstr "Επιλογή"
+
+#: bittorrent.py:1067
+msgid "Value"
+msgstr "Τιμή"
+
+#: bittorrent.py:1074
+msgid "Advanced"
+msgstr "Για προχωρημένους"
+
+#: bittorrent.py:1083
+msgid "Choose default download directory"
+msgstr "Επιλογή προεπιλεγμένου καταλόγου επιφόρτωσης"
+
+#: bittorrent.py:1107
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1156
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Αρχεία στο \"%s\""
+
+#: bittorrent.py:1168
+msgid "Never"
+msgstr "Ποτέ"
+
+#: bittorrent.py:1168
+msgid "Never download"
+msgstr "Να μην γίνει ποτέ αποφόρτωση"
+
+#: bittorrent.py:1169
+msgid "Normal"
+msgstr "Κανονικά"
+
+#: bittorrent.py:1169
+msgid "Download normally"
+msgstr "Κανονική αποφόρτωση"
+
+#: bittorrent.py:1170
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1170
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1180 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Όνομα αρχείου"
+
+#: bittorrent.py:1180
+msgid "Length"
+msgstr "Μήκος"
+
+#: bittorrent.py:1180
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1183 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1344
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1346
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1371
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Χρήστες για \"%s\""
+
+#: bittorrent.py:1377
+msgid "IP address"
+msgstr "Διεύθυνση IP"
+
+#: bittorrent.py:1377
+msgid "Client"
+msgstr "Τερματικό"
+
+#: bittorrent.py:1377
+msgid "Connection"
+msgstr "Σύνδεση"
+
+#: bittorrent.py:1377
+msgid "KB/s down"
+msgstr "KB/s κατέβασμα"
+
+#: bittorrent.py:1377
+msgid "KB/s up"
+msgstr "KB/s ανέβασμα"
+
+#: bittorrent.py:1377
+msgid "MB downloaded"
+msgstr "MB αποφορτώθηκαν"
+
+#: bittorrent.py:1377
+msgid "MB uploaded"
+msgstr "MB επιφορτώθηκαν"
+
+#: bittorrent.py:1377
+#, python-format
+msgid "% complete"
+msgstr "% πλήρης"
+
+#: bittorrent.py:1377
+msgid "KB/s est. peer download"
+msgstr "KB/s περίπου αποφόρτωσης ανα χρήστη"
+
+#: bittorrent.py:1383
+msgid "Peer ID"
+msgstr "Ταυτότης χρήστη"
+
+#: bittorrent.py:1386 bittorrent.py:1389
+msgid "Interested"
+msgstr "Ενδιαφερόμενος"
+
+#: bittorrent.py:1386 bittorrent.py:1389
+msgid "Choked"
+msgstr "Πνιγμένος"
+
+#: bittorrent.py:1386
+msgid "Snubbed"
+msgstr "Επιπληγμένος"
+
+#: bittorrent.py:1389
+msgid "Optimistic upload"
+msgstr "Αισιόδοξη επιφόρτωση"
+
+#: bittorrent.py:1474
+msgid "remote"
+msgstr "μακρινός"
+
+#: bittorrent.py:1474
+msgid "local"
+msgstr "τοπικός"
+
+#: bittorrent.py:1510
+msgid "bad peer"
+msgstr "κακή σύνδεση με χρήστη"
+
+#: bittorrent.py:1520
+#, python-format
+msgid "%d ok"
+msgstr "%d εντάξει"
+
+#: bittorrent.py:1521
+#, python-format
+msgid "%d bad"
+msgstr "%d κακό"
+
+#: bittorrent.py:1523
+msgid "banned"
+msgstr "αποκλεισμένος"
+
+#: bittorrent.py:1525
+msgid "ok"
+msgstr "εντάξει"
+
+#: bittorrent.py:1561
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Πληροφορίες για \"%s\""
+
+#: bittorrent.py:1579
+msgid "Torrent name:"
+msgstr "Όνομα torrent:"
+
+#: bittorrent.py:1584
+msgid "(trackerless torrent)"
+msgstr "(torrent χωρίς ιχνηλάτη)"
+
+#: bittorrent.py:1587
+msgid "Announce url:"
+msgstr "Ανακοινώστε διεύθηνση (url):"
+
+#: bittorrent.py:1591
+msgid ", in one file"
+msgstr ", σε ένα αρχείο"
+
+#: bittorrent.py:1593
+#, python-format
+msgid ", in %d files"
+msgstr ", σε %d αρχεία"
+
+#: bittorrent.py:1594
+msgid "Total size:"
+msgstr "Συνολικό μέγεθος:"
+
+#: bittorrent.py:1601
+msgid "Pieces:"
+msgstr "Κομμάτια:"
+
+#: bittorrent.py:1603
+msgid "Info hash:"
+msgstr "Πληροφορία hash:"
+
+#: bittorrent.py:1616
+msgid "Save in:"
+msgstr "Αποθήκευση στο:"
+
+#: bittorrent.py:1620
+msgid "File name:"
+msgstr "Όνομα αρχείου:"
+
+#: bittorrent.py:1646 bittorrent.py:1860
+msgid "_Open directory"
+msgstr "Άνοιγμα _καταλόγου"
+
+#: bittorrent.py:1651
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1751
+msgid "Torrent info"
+msgstr "Πληροφορίες torrent"
+
+#: bittorrent.py:1760 bittorrent.py:2223
+msgid "Remove torrent"
+msgstr "Αφαίρεση torrent"
+
+#: bittorrent.py:1764
+msgid "Abort torrent"
+msgstr "Ακύρωση torrent"
+
+#: bittorrent.py:1831
+#, python-format
+msgid ", will seed for %s"
+msgstr ", θα διαμοιράζεται για %s"
+
+#: bittorrent.py:1833
+msgid ", will seed indefinitely."
+msgstr ", θα διαμοιράζεται επ'αόριστον."
+
+#: bittorrent.py:1836
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Ολοκληρώθηκε, μοιραζόμενη αναλογία: %d%%"
+
+#: bittorrent.py:1839
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Ολοκληρώθηκε, %s επιφορτώθηκε"
+
+#: bittorrent.py:1842 bittorrent.py:2278
+msgid "Done"
+msgstr "Ολοκληρώθηκε"
+
+#: bittorrent.py:1856
+msgid "Torrent _info"
+msgstr "_Πληροφορίες torrent"
+
+#: bittorrent.py:1864
+msgid "_File list"
+msgstr "_Λίστα αρχείου"
+
+#: bittorrent.py:1866
+msgid "_Peer list"
+msgstr "Κατάλογος _Χρηστών"
+
+#: bittorrent.py:1876
+msgid "_Change location"
+msgstr "_Αλλαγή τοποθεσίας"
+
+#: bittorrent.py:1879
+msgid "_Seed indefinitely"
+msgstr "_Διαμοίραση/Σπορά επ'αόριστον"
+
+#: bittorrent.py:1895
+msgid "Re_start"
+msgstr "Επαν_εκκίνηση"
+
+#: bittorrent.py:1906
+msgid "_Finish"
+msgstr "Τέλος"
+
+#: bittorrent.py:1907
+msgid "_Remove"
+msgstr "_Αφαίρεση"
+
+#: bittorrent.py:1914
+msgid "_Abort"
+msgstr "_Αποβολή"
+
+#: bittorrent.py:2002
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Είστε σίγουρος ότι θέλετε να αφαιρέσετε το \"%s\";"
+
+#: bittorrent.py:2005
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Το ποσοστό διαμοίρασης σας του torrent είναι %d%%."
+
+#: bittorrent.py:2007
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Έχετε επιφορτίσει %s σε αυτό το torrent."
+
+#: bittorrent.py:2010
+msgid "Remove this torrent?"
+msgstr "Αφαίρεση αυτού του torrent;"
+
+#: bittorrent.py:2032
+msgid "Finished"
+msgstr "Τέλος"
+
+#: bittorrent.py:2033
+msgid "drag into list to seed"
+msgstr "σύρατε στην λίστα για διαμοίραση"
+
+#: bittorrent.py:2036
+msgid "Failed"
+msgstr "Απέτυχε"
+
+#: bittorrent.py:2037
+msgid "drag into list to resume"
+msgstr "σύρτε στον κατάλογο για επανάληψη"
+
+#: bittorrent.py:2096
+msgid "Waiting"
+msgstr "Αναμονή"
+
+#: bittorrent.py:2120 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Παύση"
+
+#: bittorrent.py:2150
+msgid "Running"
+msgstr "Εν λειτουργία"
+
+#: bittorrent.py:2175
+#, python-format
+msgid "Current up: %s"
+msgstr "Τρέχον πάνω: %s"
+
+#: bittorrent.py:2176
+#, python-format
+msgid "Current down: %s"
+msgstr "Τρέχον κάτω: %s"
+
+#: bittorrent.py:2182
+#, python-format
+msgid "Previous up: %s"
+msgstr "Προηγούμενος πάνω: %s"
+
+#: bittorrent.py:2183
+#, python-format
+msgid "Previous down: %s"
+msgstr "Προηγούμενος κάτω: %s"
+
+#: bittorrent.py:2189
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Μοιραζόμενη αναλογία:%0.02f%%"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s χρήστες, %s διαμοιραστές. Σύνολα απο ιχνηλάτη:%s"
+
+#: bittorrent.py:2196
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Διανεμημένα αντίγραφα: %d;Επόμενο: %s"
+
+#: bittorrent.py:2199
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Κομμάτια: %d σύνολο, %d πλήρης, %d μερικώς, %d ενεργό (%d κενό)"
+
+#: bittorrent.py:2203
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d καταστραμένα κομμάτια+ %s σε απορριπτόμενα αιτήματα"
+
+#: bittorrent.py:2294
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% ολοκληρώθηκαν, %s απομένουν"
+
+#: bittorrent.py:2302
+msgid "Download rate"
+msgstr "Ρυθμός αποφόρτωσης"
+
+#: bittorrent.py:2304
+msgid "Upload rate"
+msgstr "Ρυθμός επιφόρτωσης"
+
+#: bittorrent.py:2319
+msgid "NA"
+msgstr "ΝΑ"
+
+#: bittorrent.py:2761
+#, python-format
+msgid "%s started"
+msgstr "%s ξεκίνησε"
+
+#: bittorrent.py:2775
+msgid "_Quit"
+msgstr "_Έξοδος"
+
+#: bittorrent.py:2777
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2779
+msgid "_Open torrent file"
+msgstr "_Άνοιγμα αρχείου torrent"
+
+#: bittorrent.py:2780
+msgid "Open torrent _URL"
+msgstr "Άνοιγμα torrent _URL"
+
+#: bittorrent.py:2781
+msgid "Make _new torrent"
+msgstr "Δημιουργία _νέου torrent"
+
+#: bittorrent.py:2784
+msgid "_Pause/Play"
+msgstr "_Παύση/Αναπαραγωγή"
+
+#: bittorrent.py:2788
+msgid "Show/Hide _finished torrents"
+msgstr "Εμφάνιση/Απόκρυψη_ολοκληρωμένων torrent"
+
+#: bittorrent.py:2790
+msgid "_Resize window to fit"
+msgstr "_Επαναρύθμιση παραθύρου"
+
+#: bittorrent.py:2792
+msgid "_Log"
+msgstr "_Ιστορικό"
+
+#: bittorrent.py:2795
+msgid "_Settings"
+msgstr "_Ρυθμίσεις"
+
+#: bittorrent.py:2798 bittorrent.py:2814
+msgid "_Help"
+msgstr "_Βοήθεια"
+
+#: bittorrent.py:2800
+msgid "_About"
+msgstr "_Σχετικά με"
+
+#: bittorrent.py:2801
+msgid "_Donate"
+msgstr "_Κάντε δωρεά"
+
+#: bittorrent.py:2805
+msgid "_File"
+msgstr "_Αρχείο"
+
+#: bittorrent.py:2810
+msgid "_View"
+msgstr "_Εμφάνιση"
+
+#: bittorrent.py:2850
+msgid "Search for torrents"
+msgstr "Έρευνα για torrents"
+
+#: bittorrent.py:3004
+msgid "(stopped)"
+msgstr "(σταματημένο)"
+
+#: bittorrent.py:3016
+msgid "(multiple)"
+msgstr "(πολλαπλάσιος)"
+
+#: bittorrent.py:3146
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Ήδη κατεβαίνουν %s του αρχείου εγκατάστασης"
+
+#: bittorrent.py:3150
+#, python-format
+msgid "Install new %s now?"
+msgstr "Εγκατάσταση καινούργιας έκδοσης %s τώρα;"
+
+#: bittorrent.py:3151
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"Θέλετε να τερματίσετε την %s και να εγκαταστήσετε την καινούργια έκδοση, %s, "
+"τώρα;"
+
+#: bittorrent.py:3167
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s βοήθεια είναι στο\n"
+"%s\n"
+"Θέλετε να πάτε εκεί τώρα;"
+
+#: bittorrent.py:3170
+msgid "Visit help web page?"
+msgstr "Επίσκεψη ιστοσελίδας βοήθειας;"
+
+#: bittorrent.py:3207
+msgid "There is one finished torrent in the list. "
+msgstr "Υπάρχει ένα ολοκληρωμένο torrent στη λίστα."
+
+#: bittorrent.py:3208
+msgid "Do you want to remove it?"
+msgstr "Θέλετε να το αφαιρέσετε;"
+
+#: bittorrent.py:3210
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Υπάρχουν %d ολοκληρωμένα torrent στη λίστα."
+
+#: bittorrent.py:3211
+msgid "Do you want to remove all of them?"
+msgstr "Θέλετε να τα αφαιρέσετε όλα;"
+
+#: bittorrent.py:3213
+msgid "Remove all finished torrents?"
+msgstr "Αφαίρεση όλων των ολοκληρωμένων torrents?"
+
+#: bittorrent.py:3221
+msgid "No finished torrents"
+msgstr "Κανένα ολοκληρωμένο torrent"
+
+#: bittorrent.py:3222
+msgid "There are no finished torrents to remove."
+msgstr "Δεν υπάρχουν ολοκληρωμένα torrent για αφαίρεση."
+
+#: bittorrent.py:3274
+msgid "Open torrent:"
+msgstr "Άνοιγμα torrent:"
+
+#: bittorrent.py:3298
+msgid "Change save location for "
+msgstr "Αλλάξτε την τοποθεσία αποθήκευσης για"
+
+#: bittorrent.py:3325
+msgid "File exists!"
+msgstr "Το αρχείο υπάρχει!"
+
+#: bittorrent.py:3326
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+"Το \"%s\" ήδη υπάρχει. Θέλετε να διαλέξετε ένα διαφορετικό όνομα αρχείου;"
+
+#: bittorrent.py:3345
+msgid "Save location for "
+msgstr "Αποθήκευση τοποθεσίας για"
+
+#: bittorrent.py:3363
+msgid "Directory exists!"
+msgstr "Ο φάκελος υπάρχει!"
+
+#: bittorrent.py:3364
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" ήδη υπάρχει. Σκοπεύετε να δημιουργήσετε ένα πανομοιότυπο, αντίγραφο "
+"του φακέλου μέσα στον υπάρχον φάκελο;"
+
+#: bittorrent.py:3488
+#, python-format
+msgid "(global message) : %s"
+msgstr "(σφαιρικό μήνυμα): %s"
+
+#: bittorrent.py:3495
+#, python-format
+msgid "%s Error"
+msgstr "%s Σφάλμα"
+
+#: bittorrent.py:3501
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Πολλαπλά αφάλματα έχουν προκύψει. Πατήστε ΕΝΤΑΞΕΙ για να δείτε το "
+"ιστορικόσφάλματος."
+
+#: bittorrent.py:3668
+msgid "Stop running torrent?"
+msgstr "Να σταματήσει το torrent;"
+
+#: bittorrent.py:3669
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3680
+msgid "Have you donated?"
+msgstr "Κάνατε δωρεά;"
+
+#: bittorrent.py:3681
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Καλωσήρθατε στη νέα έκδοση %s. Κάνατε δωρεά;"
+
+#: bittorrent.py:3696
+msgid "Thanks!"
+msgstr "Ευχαριστούμε!"
+
+#: bittorrent.py:3697
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Ευχαριστούμε για τη δωρεά! Για να ξανακάνετε δωρεά, επιλέξτε \"Δωρεά\" από "
+"το μενού \"Βοήθεια\"."
+
+#: bittorrent.py:3803
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Αποτυχία έναρξης του TorrentQueue, δες παραπάνω για σφάλματα."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s Δημιουργός αρχείου torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Δημιουργία αρχείου torrent για αυτό αρχείο ή κατάλογο:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Επιλέξτε..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Οι κατάλογοι θα γίνουν torrents δέσμης)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Μέγεθος μέρους:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Χρήση _ιχνηλάτη:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Χρήση _DHT (μη κεντρικού δικτύου):"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Δικτυακές συσκευές (προαιρετικό):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Σχόλια:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Oικοδεσπότης"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Θύρα"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Δημιουργία torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Έλεγχος μεγέθους αρχείων..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Εκκίνηση διαμοίρασης"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "δημιουργία"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Ολοκληρώθηκε."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Η δημιουργία των torrents ολοκληρώθηκε."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Σφάλμα!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Σφάλμα στη δημιουργία των torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Έκδοση GTK %s ή νεότερη απαιτείται"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d ημέρες"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 ημέρα, %d ώρες"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ώρες"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d λεπτά"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d δευτερόλεπτα"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 δευτερόλεπτα"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Βοήθεια"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Συχνές ερωτήσεις:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Εκκίνηση"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Επιλέξτε έναν ήδη υπάρχοντα φάκελο..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Όλα τα αρχεία"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Δημιουργία νέου φακέλου..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Επιλέξτε ένα αρχείο"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Επιλέξτε ένα φάκελο"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Αδυναμία φόρτωσης αποθηκευμένης κατάστασης:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Αδυναμία αποθήκευσης κατάστασης UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Άκυρα περιεχόμενα κατάστασης αρχείου"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "Αδυναμία πλήρους αποκατάστασης της κατάστασης"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Αρχείο άκυρης κατάστασης (διπλή εισαγωγή)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Αρχείο άκυρης κατάστασης (λανθασμένη εισαγωγή)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Λανθασμένο αρχείο κατάστασης UI"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Λανθασμένη έκδοση αρχείου κατάστασης UI"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Μη υποστηριζόμενη έκδοση αρχείου κατάστασης UI (ίσως από νεώτερη έκδοση του "
+"client)"
+
+#: BitTorrent/TorrentQueue.py:489
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Αδυναμία διαγραφής του cached %s αρχείου:"
+
+#: BitTorrent/TorrentQueue.py:530
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Αυτό δεν είναι έγκυρο αρχείο torrent. (%s)"
+
+#: BitTorrent/TorrentQueue.py:538
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Αυτό το torrent (ή ένα με τα ίδια περιεχόμενα) είναι ήδη ενεργό."
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Αυτό το torrent (ή ένα με τα ίδια περιεχόμενα) ήδη περιμένει να "
+"ενεργοποιηθεί."
+
+#: BitTorrent/TorrentQueue.py:549
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent σε άγνωστη κατάσταση %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "Αδυναμία εγγραφής αρχείου"
+
+#: BitTorrent/TorrentQueue.py:568
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"Το συγκεκριμένο torrent δεν θα επανεκκινήσει σωστά με την επανεκκίνηση του "
+"client."
+
+#: BitTorrent/TorrentQueue.py:671
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Δεν μπορούν να τρέξουν περισσότερα από %d torrents ταυτόχρονα. Για "
+"περισσότερες πληροφορίες δείτε τις Συχνές Ερωτήσεις στο %s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"Δεν γίνεται η εκκίνηση του torrent επειδή ήδη συμπλήρωσε τις ρυθμίσεις που "
+"υπάρχουν για το πότε να τερματίσει την διαμοίραση του και επειδή υπάρχουν "
+"ήδη άλλα torrents που περιμένουν στην ουρά για εκκίνηση."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"Δεν γίνεται η εκκίνηση του torrent επειδή ήδη συμπλήρωσε τις ρυθμίσεις του "
+"για το πότε να στματήσει να διαμοιράζει το πιο πρόσφατο ολοκληρωμένο torrent."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Αποτυχία ανάκτησης της καινούργιας έκδοσης απο %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Αποτυχία προσπέλασης έκδοσης παραμέτρου από %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Αποτυχία εύρεσης κατάλληλης τοποθεσίας αποθήκευσης για τον %s %s εφαρμοστή."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Δεν υπάρχει διαθέσιμο αρχείο torrent για τον %s %s εφαρμοστή"
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Αποτυχία εκκίνησης του εφαρμοστή σε αυτή την πλατφόρμα συστήματος."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Δεν υπάρχουν torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Σε κανονική λειτουργία"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+"Ο κατάλογος όπου τα μεταβλητά δεδομένα όπως πληροφορίες γρήγορης εκκίνησης ή "
+"η κατάσταση GUI αποθηκεύονται. Προεπιλέγεται στον υποκατάλογου \"δεδομένα\" "
+"του καταλόγου διαμόρφωσης bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"η κωδικοποίηση χαρακτήρων χρησημοποιείται στο τοπικό σύστημα φακέλων. Αν "
+"αφεθεί κενό, θα εντοπιστεί αυτόματα. Ο αυτόματος εντοπισμός δεν λειτουργεί "
+"σε εκδόσεις του python παλιότερες της 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "κωδικός γλώσσας ISO για χρήση"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+"Διαδυκτιακή διεύθηνση IP προς αναφορά στον διακομιστή (σημαντικό μόνον εάν "
+"βρίσκεσται στο ίδιο δίκτυο με τον διακομιστή)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+"Αριθμός φανερής θύρας εάν είναι διαφορετικός απο την τοπική θύρα εισόδου του "
+"τερματικού"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"η μικρότερη θύρα προς χρήση. Σε περίπτωση που δεν είναι διαθέσιμη θα "
+"χρησιμοποιηθεί η επόμενη μεγαλύτερη θύρα"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "Μέγιστος αριθμός θύρας προς χρήση"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "Τοπική διαδικτυακή διεύθηνση"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "Καθυστέριση μεταξύ ανανεώσεων σε δευτερόλεπτα"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "Λεπτά αναμονής πριν την αναζήτηση νέων τερματικών"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "ελάχιστος αριθμός τερματικών για την μή αναζήτηση νέων"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "μέγιστος αριθμός τερματικών"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr "Μέγιστος αριθμός επιτρεπόμενων συνδέσεων"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "Έλεγχος εγκυρότητος των εισερχόμενων πληροφοριών στον σκληρό δίσκο"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "Μέγιστος ρυθμός ανεβάσματος kb/δευτ. Για ανέβασμα χωρίς όρια βάλτε 0"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "Αριθμός ανεβασμάτων προς ικανοποίηση"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"Μέγιστος αριθμός ανοικτών αρχείων εντός ενός τόρρεντ. Για την μη επιβολή "
+"ορίου βάλτε 0."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr "Ενεργοποίηση κατεβάσματος αρχείων χωρίς την χρήση ιχνηλάτη"
+
+#: BitTorrent/defaultargs.py:101
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"Αριθμός δευτερολέπτων μεταξύ αποστολής σήματος ότι το τερματικό είναι ενεργό"
+
+#: BitTorrent/defaultargs.py:103
+msgid "how many bytes to query for per request."
+msgstr "Πόσα bytes να ζητηθούν ανά αίτηση"
+
+#: BitTorrent/defaultargs.py:105
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+"Μέγιστο αποδεκτό μέγεθος κωδικοποίησης. Μεγάλες τιμές μειώνουν την ταχύτητα"
+
+#: BitTorrent/defaultargs.py:108
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "Χρόνος σε δευτερόλεπτα μεταξύ κλεισίματος ανενεργών συνδέσεων"
+
+#: BitTorrent/defaultargs.py:111
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "Χρόνος σε δευτερόλεπτα μεταξύ ελέγχων για νεκρές συνδέσεις"
+
+#: BitTorrent/defaultargs.py:113
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+"Μέγιστο μέγεθος πληροφορίας προς αποστολή στα άλλα τερματικά. Εάν υπάρξει "
+"μεγαλύτερη αίτηση η σύνδεση θα κλείσει"
+
+#: BitTorrent/defaultargs.py:116
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+"Περίοδος μεταξύ διαδοχικών υπολογισμών ταχυτήτων ανεβάσματος και κατεβάσματος"
+
+#: BitTorrent/defaultargs.py:118
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "Μέγιστη περίοδος μεταξύ υπολογισμών ρυθμού σποράς"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "Μέγιστος χρόνος μεταξύ ανακοινώσεων"
+
+#: BitTorrent/defaultargs.py:122
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+"Μέγιστος χρόνος αναμονής πριν την διακύρηξη της σύνδεσης ώς κεκορεσμένης"
+
+#: BitTorrent/defaultargs.py:125
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"Αριθμός συνδέσεων μετά τις οποίες η προταιρεότητα αλλάζει απο τυχαία σε ανα "
+"σπανιότητα"
+
+#: BitTorrent/defaultargs.py:127
+msgid "how many bytes to write into network buffers at once."
+msgstr "πόσα bytes να γράφονται στην λανθάνουσα μνήμη του δικτύου"
+
+#: BitTorrent/defaultargs.py:129
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr "Διακοπή συνδέσεων που αποστέλουν λάθος δεδομένα επανηλλημένως"
+
+#: BitTorrent/defaultargs.py:132
+msgid "do not connect to several peers that have the same IP address"
+msgstr "Απαγόρευση σύνδεσης σε πολλαπλά τερματικά που έχουν την ίδια διεύθηνση"
+
+#: BitTorrent/defaultargs.py:134
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"Ενεργοποίηση λύσης στο πρόβλημα αργής ανάγνωσης απο τον δίσκο στο "
+"λειτουργικό σύστημα BSD"
+
+#: BitTorrent/defaultargs.py:138
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "Διεύθυνση ενδιάμεσου διακομιστή προς χρήση απο τον ιχνηλάτη"
+
+#: BitTorrent/defaultargs.py:140 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "Διακοπή συνδέσεων με το RST και αποφυγή τροπη σε TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Χρήση τρεπόμενων δικτύων βιβλιοθηκών για συνδέσεις. 1 για χρήση, 0 για μη "
+"χρήση, -1 για αυτόματη χρήση"
+
+#: BitTorrent/defaultargs.py:159
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"Όνομα αρχείου ή υποκαταλόγου για σώσιμο των τόρρεντ. Εάν μείνει κενό ο "
+"χρήστης θα ερωτάται κάθε φορά"
+
+#: BitTorrent/defaultargs.py:164
+msgid "display advanced user interface"
+msgstr "Προβολή διεπαφής για προχωρημένους "
+
+#: BitTorrent/defaultargs.py:166
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr "Μέγιστος χρόνος σποράς ενός ολοκληρομένου τόρρεντ"
+
+#: BitTorrent/defaultargs.py:169
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+"Ελάχιστος λόγος ανεβάσματος/κατεβάσματος επι τοις εκατό,προς επίτευξη πριν "
+"την παύση της σποράς/διαμοιρασμού. 0 σημαίνει κανένα όριο"
+
+#: BitTorrent/defaultargs.py:172
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+"Ελάχιστος λόγος ανεβάσματος/κατεβάσματος επι τοις εκατό, προς επίτευξη πρίν "
+"την παύση σποράς/διαμοιρασμού του τελευταίου τόρρεντ. 0 σημαίνει κανένα όριο"
+
+#: BitTorrent/defaultargs.py:175
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Διαμοιρασμός/σπορά όλων των ολοκληρωμένων τόρρεντ επάπειρον, μέχρις την "
+"ακύρωση τους απο τον χρήστη"
+
+#: BitTorrent/defaultargs.py:178
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Διαμοιρασμός/σπορά του τελευταίου ολοκληρωμένου τόρρεντ επάπειρον, μέχρις "
+"την ακύρωση τους απο τον χρήστη"
+
+#: BitTorrent/defaultargs.py:181
+msgid "start downloader in paused state"
+msgstr "Έναρξη με τα τόρρεντ σε παύση"
+
+#: BitTorrent/defaultargs.py:183
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+"Αντικατάσταση: Αντικατάσταση του τρέχωντος τόρρεντ με το νέοΠρόσθεση: "
+"Παράλληλη εκτέλεση των τόρρεντΕρώτηση: Ρώτα τον χρήστη κάθε φορά"
+
+#: BitTorrent/defaultargs.py:193
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:198
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:201
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:216
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:223 BitTorrent/defaultargs.py:243
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:228
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:237
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:248
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:253 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:272
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:279
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:284
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:289
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:294
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:59
+msgid "download complete!"
+msgstr "Ολοκλήρωση αποφόρτωσης!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:64
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:67
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "ολοκλήρωση σε %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:173
+msgid "download succeeded"
+msgstr "Επιτυχημένη αποφόρτωση"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:230
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:233
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:244
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d κατανεμημένα αντίγραφα (επόμενο: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:246
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ΛΆΘΟΣ:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "αποθήκευση:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "μέγεθος αρχείου:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "ποσοστό ολοκλήρωσης:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "υπολειπόμενος χρόνος:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "αποφόρτωση στο:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "ρυ8μός αποφόρτωσης:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:357
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:375
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:382
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:435
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:437
+msgid "you must specify a .torrent file"
+msgstr "Πρέπει να κα8ορίσεις ένα αρχείο .torrent"
+
+#: bittorrent-curses.py:47 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:49 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:54
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+"Μπορείς ακόμα να χρησιμοποιήσεις το \"bittorrent-console\" για αποφόρτωση."
+
+#: bittorrent-curses.py:155
+msgid "file:"
+msgstr "αρχείο:"
+
+#: bittorrent-curses.py:156
+msgid "size:"
+msgstr "μέγε8ος:"
+
+#: bittorrent-curses.py:157
+msgid "dest:"
+msgstr "προορισμός:"
+
+#: bittorrent-curses.py:158
+msgid "progress:"
+msgstr "πρόοδος:"
+
+#: bittorrent-curses.py:159
+msgid "status:"
+msgstr "κατάσταση:"
+
+#: bittorrent-curses.py:160
+msgid "dl speed:"
+msgstr "ταχύτητα αποφόρτωσης:"
+
+#: bittorrent-curses.py:161
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:239
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:266
+msgid "error(s):"
+msgstr "λάθη:"
+
+#: bittorrent-curses.py:275
+msgid "error:"
+msgstr "λά8ος:"
+
+#: bittorrent-curses.py:278
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:323
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:447
+msgid "These errors occurred during execution:"
+msgstr "Κατά την διάρκεια της εκτέλεσης παρουσιάστηκαν τα ακόλου8α λά8η:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Χρήση: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "δεν υπάρχουν torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Προειδοποίηση:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "δέν είναι φάκελος"
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Μπορείς ακόμα να χρησιμοποιήσεις το \"btdownloadheadless.py\" για αποφόρτωση."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Μέγε8ος"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Συνολικά:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "λά8ος:"
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Χρήση: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "Όνομα αρχείου: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "Μέγεθος αρχείου:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "αρχεία:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "Όνομα φακέλου: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "μέγεθος αρχείου:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "σχόλιο:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Συμπιεσμενα: %i Ασυμπίεστα: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Το αρχείο %s ανήκει σε άλλο torrent που βρίσκεται σε εκτέλεση."
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Το αρχείο %s ήδη υπάρχει, αλλά δεν είναι απλό αρχείο."
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "έλεγχος υπάρχοντος αρχείου"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/Encoder.py:252
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Χρήση:%s"
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "λάθος format %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Αρχική εκκίνηση"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Επιπλέον σφάλμα στο κλείσιμο λόγο σφάλματος:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Αδυναμία αφαίρεσης αρχείου γρήγορης επαναφοράς λόγο σφάλματος:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "διαμοίραση"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Αδυναμία εγγραφής δεδομένων επαναφοράς:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "κλείσιμο"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:56
+msgid "RawServer_twisted requires twisted 2.0.0 or greater"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:298
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:513 BitTorrent/RawServer_twisted.py:527
+#: BitTorrent/RawServer_twisted.py:550
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:716
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:728
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/eo.po b/po/eo.po
new file mode 100644
index 0000000..a946ed2
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,2893 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-23 11:34-0800\n"
+"Last-Translator: Marc Schütz <schuetzm@gmx.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instalu Python %s aŭ pli novan version"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "evitinda, ne uzu"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "Malsukcesis komuniki kun alia procezo %s, sed unu jam ŝajne ruliĝas."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Eblas, ke fermi ĉiujn %s-fenestrojn riparos la problemon."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s jam ruliĝas"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Malsukcesis komuniki kun alia procezo %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s aŭ pli nova versio nepras"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "trenu por reordigi"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "klaku per la dekstra musbutono por menuo"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "konekto per komutebla lineo"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kablo 128k aŭ pli"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kablo 256k aŭ pli"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k aŭ pli"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Entajpu la URL-on de la torento"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Entajpu la URL-on de la malfermota torenta dosiero"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksimuma alŝutrapido"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Provizore haltigu ĉiujn aktivajn torentojn"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Rekomencu elŝutadon"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova versio de %s haveblas"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Pli nova versio de %s estas havebla.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Vi uzas %s, kaj la nova versio estas %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"La plej lasta versio ĉiam haveblas ĉe \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Elŝutu _poste"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Elŝutu _tuj"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Rememorigu min poste"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Pri %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versio %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Ne eblis malfermi %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donacu"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Protokolo de %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Konservu la saluton"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "la protokolo konserviĝis"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "la protokolo malpleniĝis"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Preferoj de %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Ĝenerale"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Lanĉu BitTorrent-on kiam Vindozo startas"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimumigu al la taskopleto"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr "Teksto sur la plenumskalo estu ĉiam nigra (postulas restartigon)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Konservante"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Konservu novajn elŝutaĵojn en:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Ŝanĝu..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Demandu, kie konservi ĉiun novan elŝutaĵon"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Elŝutas"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Kiam vi elŝutas novan torenton:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Haltigu alian aktivan torenton por krei spacon "
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Ne haltigu la aliajn aktivajn torentojn"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Demandu min ĉiufoje"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Dissemante"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Dissemu kompletiĝintajn torentojn: ĝis kiam la kvanto de plusemado atingas "
+"[_] procentojn, aŭ dum [_] minutoj, depende de kiu el tiuj okazas unue"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Dissemu senlime"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Dissemu la lastan kompletan torenton: ĝis kiam la kvanto de plusemado "
+"atingas [_] procentojn."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Reto"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Serĉu disponeblan pordon:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "ekde pordo:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP-adreso raportenda al la spurilo"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Nur efikas se vi estas en la\n"
+"sama loka reto kiel la spurilo)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"AVERTO: Ŝanĝi tiujn agordojn\n"
+"povus misfunkciigi %s"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Elekto"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valoro"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Altgrade"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Elektu defaŭltan dosierujon por elŝutaĵoj"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Malsukcesis forigi la simbolan ligilon: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Dosieroj en \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Neniam"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Neniam elŝutu"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normale"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Elŝutu normale"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Unue"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Elŝutu unue"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Dosiernomo"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Longo"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Elŝutu"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "neniam"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "unue"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Kunsemantoj por \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-adreso"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Kliento"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Konekto"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s elŝute"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s alŝute"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB elŝutitaj"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB alŝutitaj"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% komplete"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s taksita elŝutado de kunsemantoj"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Identigilo de kunsemanto"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesite"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Sufokite"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Forignorite"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimisma alŝuto"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "defora"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "loka"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "malbona kunsemanto"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d bone"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d malbone"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "forbarita"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "bone"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informoj por \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torentonomo"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(senspurila torento)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Anonca URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en unu dosiero"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", en %d dosieroj"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Totala grandeco:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Eroj:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informo-haketado:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Konservu en:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Dosieronomo:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Malfermu dosierujon"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Montru _dosieroliston"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torentaj informoj"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Forigu torenton"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Ĉesigu torenton"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", dissemiĝos dum %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", dissemiĝos senlime."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Finita. Kvanto de plusendado: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Finita, %s alŝutitaj"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Finita"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torentaj _informoj"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Dosierolisto"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Listo de _kunsemantoj"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Ŝanĝu lokon"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Dissemu senlime"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_startigu"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finigu"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Forigu"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Ĉesigu"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Ĉu vi certas, ke vi volas forigi \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Via kvanto de plusemado por tiu torento estas %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Vi alŝutis %s al tiu torento."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Ĉu forigi tiun torenton?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Finita"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "trenu en la liston por dissemi"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Malsukcesis"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "trenu en la liston por rekomenci"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Atendas"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Paŭzite"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Ruliĝante"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Nun alŝutiĝas: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Nun elŝutiĝas: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Antaŭe alŝutiĝis: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Antaŭe elŝutiĝis: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Kvanto de plusemado: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s kunsemantoj, %s semoj. Sume de la spurilo: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Distribuitaj kopioj: %d; Sekvas: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Eroj: %d sume, %d kompletaj, %d partaj, %d aktivaj (%d malplenaj)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d malbonaj eroj + %s en rifuzitaj petoj"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% finitaj, %s restantaj"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Elŝutrapido"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Alŝutrapido"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "-"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s komencitaj"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Forlasu"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr "_Eliru"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Malfermu torentodosieron"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Malfermu _URL-on de torento"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Kreu _novan torenton"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Paŭzu/Ludu"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Montru/Kaŝu _finitajn torentojn"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Alĝustigu la _grandecon de la fenestro"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Protokolo"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Agordaro"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Helpo"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Informoj"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donacu"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Dosiero"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Aspekto"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Serĉu torenton"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(ĉesis)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(multaj)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Jam elŝutiĝas la instalilo por %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Ĉu vi volas instali la novan %s nun?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Ĉu vi volas forlasi %s kaj instali la novan version, %s%, nun?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"Helpo pri %s haveblas ĉe\n"
+"%s\n"
+"Ĉu vi deziras nun iri tien?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Ĉu vi volas viziti la helpo-retpaĝon?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Estas unu finita torento en la listo."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Ĉu vi deziras forigi ĝin?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Estas %d finitaj torentoj en la listo."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Ĉu vi deziras forigi ilin ĉiujn?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Ĉu forigi ĉiujn finitajn torentojn?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Neniuj finitaj torentoj"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Estas neniuj finitaj torentoj por forigi."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Malfermu torenton:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Ŝanĝu la konservolokon de"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "La dosiero ekzistas!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" jam ekzistas. Ĉi vi volas elekti alian dosieronomon?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Konservu la lokon de"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "La dosierujo ekzistas!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" jam ekzistas. Ĉu vi intencas krei saman, duan dosierujon en tiu "
+"dosierujo?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(malloka mesaĝo) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Eraro"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Okazis multaj eraroj. Alklaku Bone por vidi la protokolon."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Ĉu vi volas haltigi la torenton?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr "Komenciĝos \"%s\". Ĉu vi deziras ankaŭ haltigi alian torenton?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Ĉu vi faris donacon?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bonvenon al la nova versio de %s. Ĉu vi faris donacon?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Dankon!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Dankon pro via donaco! Por fari novan donacon, elektu \"Donacu\" de la menuo "
+"\"Helpo\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Ne eblis startigi la atendovicon. Vidu supre por eraroj."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Elektu..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d tagoj"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 tago %d horoj"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d horoj"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutoj"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekundoj"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekundoj"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Oftaj demandoj:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Elektu dosierujon jam ekzistantan..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Kreu novan dosierujon..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Elektu dosieron"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Elektu dosierujon"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Ne estas torentoj"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Funkcianta normale"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kontrolu la retligon"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..a9a5f76
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,2873 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 17:47-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instale Python %s o posterior"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "desaprobado, no lo use"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "Falló al comunicar con otro proceso %s pero parece haber uno activo."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Cerrar todas las ventanas %s puede solucionar el problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s ya está activo"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Falló al comunicar con otro proceso %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Necesita PyGTK %s o más reciente"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "arrastre para reordenar"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "click derecho para mostrar menú"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "acceso telefónico"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable de hasta 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable de hasta 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL de hasta 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introduzca la dirección URL del torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introduzca la dirección URL del archivo torrent a abrir:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Velocidad máxima de subida:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Detener temporalmente todos los archivos .torrent activos"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Reanudar descarga"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nueva versión %s disponible"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Hay una nueva versión de %s disponible.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Usted está usando %s, y la nueva versión es %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "En cualquier momento puede obtener la versión más reciente de \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Descargar _después"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Descargar _ahora"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Recordármelo después"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Acerca de %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versión %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "No pudo abrirse %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donar"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Registro de actividades"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Guardar registro en:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "registro guardado"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "registro borrado"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Configuración"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "General"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Ejecutar BitTorrent cuando comience Windows "
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizar a la bandeja del sistema"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "El texto en la barra de avance siempre es\nnegro (requiere reiniciar)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Guardando"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Guardar descargas nuevas en:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Cambiar..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Preguntar dónde guardar cada descarga nueva"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Descargando"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Al iniciar un nuevo torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Parar otro torrent activo para hacer sitio"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_No parar otros torrentes activos"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "P_reguntar cada vez"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Compartiendo"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Compartir los torrents completados: hasta que la proporción compartida alcance [_] por ciento, o por [_] minutos, lo que suceda primero."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Compartir indefinidamente"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Compartir el último torrent completado: hasta que la proporción compartida alcance el [_] por ciento."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Red"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Buscar un puerto disponible:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "empezando en puerto:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Habilitar asignación automática de puertos"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP que indicar al rastreador:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Sólo tiene efecto si Ud. está en la\nmisma red local del rastreador)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ADVERTENCIA: Cambiar esta configuración puede\nimpedir que %s funcione correctamente."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opción"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Escoger directorio predeterminado de descarga"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Falló al borrar el acceso directo: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Archivos en \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nunca"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nunca descargar"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Bajar normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primero"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Bajar primero"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nombre del archivo"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Longitud"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Descarga"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nunca"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primero"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Personas para \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Dirección IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Cliente"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Conexión"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s descarga"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s subida"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB descargados"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB subidos"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completado"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. descarga de la persona"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID de Persona"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesado"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Ahogado"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Detenido"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Subida optimista"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remoto"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "persona indebida"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d malo"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "prohibido"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informacion para \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nombre del archivo .torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sin rastreador)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Anunciar url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en un archivo"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", en %d archivos"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Tamaño total:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Piezas:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Trozo de Información:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Guardar en:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nombre de archivo:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Abrir directorio"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrar_lista de archivos"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Información del torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Borrar el torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Cancelar torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", se compartirá por %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", se compartirá indefinidamente."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Finalizado, proporción de compartimiento: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Finalizado, %s subido"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Finalizado"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Información de torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista de archivos"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Lista de personas"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Cambiar ubicación"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Compartir indefinidamente"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_iniciar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finalizar"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "Bo_rrar"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Cancelar"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "¿Está seguro de querer borrar \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Su proporción de uso compartido para este torrent es %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Ha subido %s a este torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "¿Borrar este torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Terminado"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "arrastrar a la lista para compartir"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Falló"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "arrastrar a la lista para reanudar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Esperando"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pausado"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Ejecutando"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Actual Subido: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Actual Descargado: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Anterior Subido: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Anterior Descargado: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Proporción compartida: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s personas, %s compartidos. Totales del rastreador: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copias distribuidas: %d; Siguiente: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Piezas: %d total, %d completos, %d parciales, %d activos (%d vacíos)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d piezas malas + %s en peticiones descartadas"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% finalizado, %s restante"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Velocidad de descarga"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Velocidad de subida"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "ND"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s iniciado"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Salir"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Salir"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Abrir archivo .torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Abrir _URL torrent "
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Hacer _nuevo .torrent "
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/ Reanudar"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostrar/Esconder .torrent _terminados"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Cambiar a tamaño óptimo de ventana"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Registro"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Configuración"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "A_yuda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "A_cerca de"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donar"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Archivo"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ver"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Buscar torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(detenido)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(múltiple)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Ya se está descargando el %s instalador"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "¿Instalar nuevo %s ahora?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "¿Desea salir de %s e instalar la nueva versión, %s, ahora?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Ayuda de %s está en \n%s\n¿Desea ir ahí ahora?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "¿Visitar la página de ayuda?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Hay un torrent finalizado en la lista."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "¿Desea eliminarlo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Hay %d torrents finalizados en la lista."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "¿Desea eliminarlos todos?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "¿Borrar todos los .torrent terminados?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "No hay .torrent terminados"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "No hay .torrent terminados que eliminar."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Abrir .torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Cambiar ubicación para guardar de"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "¡El archivo ya existe!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+"El archivo \"%s\" ya existe. ¿Desea elegir un nombre de archivo distinto?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Ubicación para guardar"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "¡El directorio existe!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" ya existe. ¿Está intentando crear un directorio idéntico, duplicado dentro del directorio existente?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(mensaje global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Error"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Se han producido múltiples errores. Haga click en OK para ver el registro de errores."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "¿Detener el torrent activo?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "Va a iniciar \"%s\". ¿Quiere interrumpir también otro torrent activo?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "¿Ha donado Ud.?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bienvenido a la nueva versión de %s. ¿Ha donado Ud.?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "¡Gracias!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"¡Gracias por donar! Para donar nuevamente, seleccione \"Donar\" en el menú \"Ayuda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "No se pudo iniciar la \"TorrentQueue\", vea los errores arriba."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "creador %s de archivo torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Hacer archivo torrent para este archivo/directorio:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Elegir..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(los directorios se convertirán en torrentes por lotes)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Tamaño de las piezas:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Usar el _rastreador:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Usar _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nodos (opcional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Hacer"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Puerto"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Construyendo torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Revisando el tamaño de los archivos..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Comenzar a compartir"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "construyendo"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Finalizado."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Construcción de torrents finalizada."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "¡Error!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Error al construir los torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Necesita GTK %s o más reciente"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d días"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 día %d horas"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d horas"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutos"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d segundos"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 segundos"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ayuda"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Preguntas Frecuentes:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ir"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Elegir una carpeta existente..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Archivos Torrent"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Crear una nueva carpeta..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Seleccionar archivo"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Seleccionar carpeta"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "No se pudo cargar el estado guardado:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "No se pudo guardar el estado UI (Interface del Usuario):"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Contenidos inválidos del archivo de estado"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Error al leer el archivo %s\". "
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "No se puede restaurar completamente el estado"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Archivo de estado inválido (entrada duplicada)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Datos corruptos en \"%s\", no se puede restaurar torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash no coincide)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Archivo de estado inválido (entrada errónea)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Archivo de estado de UI (Interface del Usuario) incorrecto"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versión del archivo de estado de UI (Interface del Usuario) incorrecta"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versión no soportada del archivo de estado de UI (Interface del Usuario) (¿De una versión nueva del cliente?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "No se pudo borrar el archivo %s cacheado:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Este no es un archivo .torrent válido (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Este .torrent (o uno con el mismo contenido) ya se está ejecutando."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Este .torrent (o uno con el mismo contenido) ya está esperando a ser ejecutado."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent en estado desconocido %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "No se pudo escribir el archivo"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"el .torrent no será reiniciado correctamente cuando se reinicie el cliente"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"No se pueden ejecutar más de %d torrents simultáneamente. Para más información vea las Preguntas Frecuentes en %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"No se inició el torrent debido a que existen otros torrents en espera de ser ejecutados, y este ya cumple con la configuración para cuándo parar de compartir."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"No se inició el torrent debido a que ya cumple con la configuración para cuándo parar de compartir el último .torrent completado."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "No se pudo obtener la última versión desde %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "No se pudo descifrar la cadena de la nueva versión desde %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"No se pudo encontar un destino temporal apropiado para guardar el instalador de %s %s"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+"No hay ningún archivo de torrent disponible para el instalador de %s %s"
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "El instalador %s %s parece estar incompleto, ausente o corrupto."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "No se puede cargar el instalador en este Sistema Operativo"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "No hay torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Iniciando la descarga"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Ejecutándose normalmente"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Las descargas pueden ser lentas:\nProbablemente haya un cortafuegos o traducción de direcciones (NAT)"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Compruebe la conexión de red"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"el directorio en se han guardado datos variables, como la información de reanudado rápido y estado de GUI. Se usará por defecto el subdirectorio 'data' del directorio deconfig de bittorrent. "
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codificación de caracteres usada en el sistema de archivos local. Si se deja vacío, se autodetectará. Autodetección no funciona con versiones anteriores a python 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Codigo ISO del lenguaje a usar"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP debe reportar al rastreador (no tiene efecto a menos que está en la misma red local que el rastreador)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"número de puerto visible al mundo si es distinto al que el cliente escucha localmente"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "puerto mínimo para escuchar, se incrementa si éste no está disponible"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "puerto máximo para escuchar"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP al que se debe ligar localmente"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "segundos entre actualizaciones de la informacion exhibida"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutos de espera entre peticiones de más personas"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "número mínimo de personas para no hacer una repeción de la petición"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"número de personas en el que se debe dejar de iniciar nuevas conexiones"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "número máximo de conexiones salientes incompletas"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"número máximo de conexiones permitidas, después de este las nuevas conexiones de entrada serán cerradas de inmediato."
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "si se debe verificar o no los trozos en el disco"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "máximo de kB/s de subida, 0 significa sin límite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "número de subidas que llenar con desahogos adicionales optimistas "
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"número máximo de archivos abiertos a la vez en un multi-archivo .torrent, 0 significa ilimitados. Se usa para evitar que se agoten los descriptores de archivos. "
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicializa un cliente sin rastreador. Esta opción debe habilitarse para descargar torrents sin rastreador."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "número de segundos de pausa entre envíos de revividores (keepalives)"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "número de bytes a solicitar por cada petición."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"longitud máxima del prefijo de codificación que aceptará sobre el cable - valores grandes pueden hacer caer la conexión."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "segundos de espera entre cierres de sockets que no han recibido nada"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"segundos de espera entre verificaciones de conexiones excedidas del tiempo límite"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"longitud máxima de la porción a enviar a las personas, cerrar la conexión si se recibe una petición mayor"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"Intervalo de tiempo máximo para la estimación de las velocidades actuales de subida y bajada."
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"Intervalo de tiempo máximo para la estimación de la velocidad actual de compartido."
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"tiempo máximo de espera entre la repetición de avisos si continúan fallando"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"segundos de espera para la entradad de datos antes de asumir que está casi permanentemente ahogada"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"número de descargas al cual se cambiará de aleatorio a más raro primero"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+"cantidad de bytes a escribir en los almacenadores (buffers) de red a la vez."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"rechazar más conexiones de direcciones incompletas o personas intencionalmente hostiles que envían datos incorrectos"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "no conectarse a varias personas con la misma direccion IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"si es distinto a cero, fije la opción TOS para las conexiones de persona a este valor"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"permitir solución alternativa para un error en BSD libc que hace la lectura de archivos muy lenta."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "direccion del proxy HTTP para usar en la conexiones con el rastreador"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "cerrar conexiones con RST y evitar el estado TIME_WAIT de TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Utilizar librerías de red Trenzadas para las conexiones de red. 1 significa uso de trenzadas, 0 significa no usar trenzadas, -1 significa autodetectar, y de preferencia trenzadas"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nombre del archivo (para .torrents de un solo archivo) o nombre del directorio (para .torrent en lotes) donde guardar el .torrent, sobreescribiendo su nombre original. Ver también --save_in, si no se especifican se le preguntará al usuario en qué ubicación quiere guardar"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "mostrar interfaz de usario avanzado"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"número máximo de minutos que se compartirá un torrent completado antes de detenerse"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"la velocidad mínima de subida/bajada, en porcentaje, antes de parar de compartir del torrent. 0 significa ilimitada."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"la velocidad mínima de subida/bajada, en porcentaje, antes de parar de compartir el último torrent. 0 significa ilimitada."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Compartir cada torrent completado indefinidamente (hasta que el usuario lo cancele)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Compartir el último torrent indefinidamente (hasta que el usuario lo cancele)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "iniciar el programa de descarga en estado pausado"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"especificar cómo debe comportarse la aplicación cuando el usuario trata de iniciar manualmente otro torrent: \"reemplazar\" significa siempre reemplazar el torrent activo por el nuevo, \"agregar\" significa siempre agregar el torrent activo en paralelo, y \"preguntar\" significa preguntar al usuario cada vez."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Comenzar BitTorrent minimizado"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"invalidar la versión provista por la comprobación de la versión http y habilitar el modo de depuración de la comprobación de versión"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"invalidar la versión actual usada en la comprobación de versión y habilitar el modo de depuración de la comprobación de versión"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"especifique el tamaño y posición de la ventana, mediante el formato: ANCHOxALTO+POSICIÓNX+POSICIÓNY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nombre de archivo (para torrents de un solo archivo) o nombre de directorio(para torrents en lotes) donde guardar el torrent, sobreescribiendo el nombre predeterminado en el torrent. Vea también --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"número maximo de subidas permitidas a la vez. -1 significa (deseablemente) unnúmero razonable basado en la velocidad máxima de subida. Los valores asignados automáticamente sólo son perceptibles cuando se descarga un torrent a la vez."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directorio local donde se guardará el contenido del torrent. El archivo (para torrents de un solo archivo) o directorio (para torrents en lotes) será creado bajo este directorio usando el nombre predeterminado especificado en el archivo .torrent. Vea también --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"si se debe o no preguntar el lugar en donde guardar los archivos descargados"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"el directorio local en donde se guardarán los torrents, usando un nombre determinado por --saveas_style. Si se deja en blanco, cada torrent se guardará en el directorio del archivo .torrent correspondiente "
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+"con qué frecuencia volver a escanear el directorio de torrents, en segundos"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"esperar estos segundos después de notificar un torrent antes de iniciarlo para evitar carrera con el traceador"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Cómo nombrar las descargas de torrents: 1: utilice el nombre DEL archivo torrent (menos .torrent); 2:utilice el nombre codificado EN el archivo torrent; 3: cree un directorio con el nombre DEL archivo torrent (menos .torrent) y guárdelo en ese directorio utilizando el nombre codificado EN el archivo torrent; 4: si el nombre DEL archivo torrent (menos .torrent) y el nombre codificado EN el archivo torrent son idénticos, utilice ese nombre (estilo 1/2), si no, cree un directorio intermedio como en el estilo 3; CUIDADO: las opciones 1 y 2 tienen la habilidad de sobreescribir archivos sin avisar y pueden presentar problemas de seguridad."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"si se debe mostrar o no la ruta completa o el contenido del torrent por cada torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directorio en donde buscar archivos .torrent (semi-recursivo)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "si se debe mostrar o no información de diagnóstico en stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "a qué potencia de dos configurar el tamaño de la pieza"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nombre predeterminado del rastreador"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"si es falso entonces haga un torrent sin rastreador, en lugar de la URL de announce utilice un puerto seguro de la forma <ip>:<puerto> o una cadena vacía para tirar algunos nodos de su tabla de enrutamiento"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "¡descarga completa!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<desconocido>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "terminando en %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "descarga existosa"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB sub / %.1f MB desc)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB sub / %.1f MB desc)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d vistas ahora, más %d copias distribuidas (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d copias distribuidas (siguiente: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d vistas ahora"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERROR:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "guardando:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "tamaño del archivo:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "porcentaje hecho:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tiempo restante:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "descarga en:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "ratio de descarga:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "ratio de subida:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "Calificación por compartir:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "estado de compartido:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "estado de la persona:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "No puede especificar ni --save_as ni --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "cerrando"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Error leyendo configuración:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Error al leer el archivo .torrent:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "debe especificar un archivo .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Fallo en la inicialización de la IGU (GUI)en modo texto, imposible seguir."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Esta interfaz de descarga necesita el módulo estándar de Python \"curses\", que desafortunadamente no está disponible para el puerto nativo de Windows de Python. De cualquier modo, está disponible para el puerto Cygwin de Python, que se ejecuta en todos los sistemas Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Todavía debes usar la consola de bittorrent para descargar."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "archivo:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "tamaño:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progreso:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "estado:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "velocidad de la descarga:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "velocidad de la subida:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "compartiendo:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "compartidos:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "personas:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d vistas ahora, más %d copias distribuidas(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "error(es):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "error:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Subida Descarga Completado Velocidad"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"descargando %d piezas, tiene %d fragmentos, %d de %d piezas completadas"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Estos errores se han producido durante la ejecución:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s TRACKER_URL[ARCHIVOTORRENT[ARCHIVOTORRENT ...]]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "announce antiguo para %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "no hay torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERROR DEL SISTEMA - SE HA GENERADO UNA EXCEPCIÓN"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Advertencia:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "no es un directorio"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+"error: %s\nejecute sin argumentos para una explicación de los parámetros"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPCIÓN:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Todavía puede utilizar \"btdownloadheadless.py\" para la descarga."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "conectando a personas"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tiempo Estimado de Llegada (ETA) en %d:%02d:%02d "
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Tamaño"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Subida"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totales:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s)%s - %s peers %s compartidos %s copias dist. - %s desc %s sub"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "error:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nejecute sin argumentos para una explicación de los parámetros"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "comentario opcional legible por humanos para poner en el .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "archivo objetivo opcional para el torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodifica %s archivos de metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s [ARCHIVOTORRENT[ARCHIVoTORRENT ...]]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "archivo de metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "trozo de info:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nombre de archivo: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "tamaño de archivo:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "archivos:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nombre del directorio: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "tamaño de archivo:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "rastreador de url announce: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nodos sin rastreador:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentario:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Lun"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mié"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Jue"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Vie"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sáb"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dom"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Ene"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Abr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "May"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ago"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Oct"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dic"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Comprimido: %i Sin Comprimir: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "No fue posible guardar permanentemente las opciones:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Error leyendo el fichero de configuración. El fichero antiguo se ha almacenado en \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Opción de configuración incorrecta: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Debe salir de %s y reinstarlo. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "No se pudo encontrar traducción para el lenguaje \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "El archivo %s pertenece a otro archivo .torrent en funcionamiento"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "El archivo %s ya existe, pero no es un archivo regular"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lectura corta - ¿algo truncó los archivos?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formato sin apoyo del archivo de resumido rápido, ¿tal vez otra versión del cliente? "
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Parece que otro programa ha movido, renombrado o borrado el fichero, o %s puede haber fallado la última vez que se ejecutó."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Parece que otro programa ha modificado el fichero, o %s puede haber fallado la última vez que se ejecutó."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Parece que otro programa ha modificado el tamaño del fichero, o %s puede haber fallado la última vez que se ejecutó."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "No se logró leer los datos de resumido rapido:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "conexión rechazada"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Ha pedido que la reutilización esté apagada al hacer el bind. Lo siento, no puedo hacer eso."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() debería ser llamado únicamente una vez por reactor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() puede no retornar hasta que haya actividad, y puede no procesar el evento que quiere. Use listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Datos erróneos en el archivo de respuesta - El total es muy pequeño"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "Datos erróneos en el archivo de respuesta - El total es muy grande"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "revisando archivo existente"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 o la información de resumido rápido no coincide con el estado del archivo (faltan datos)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Información errónea de resumido rápido (Los archivos contienen más datos)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Información errónea de resumido rápido (valor no válido)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "Datos corruptos en el disco - ¿tal vez posees dos copias activas?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "El archivo se completó al inicio, pero falló en el chequeo de trozos "
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "No se ha podido establecer el manipulador de señal:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "eliminado \"%s/\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "añadido \"%s/\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "esperando la comprobación de trozos"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "descargando"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "releyendo el archivo de configuración"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"No se puede especificar el nombre del archivo .torrent al generar varios torrents simultáneamente"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "El juego de caracteres \"%s\" no está soportado en esta versión"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"No se puede convertir el nombre del archivo/directorio \"%s\" a utf-8 (%s). O el nombre de archivo \"%s\" es incorrecto o contiene caracteres no válidos."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"El nombre de archivo/directorio \"%s\" contiene valores unicode reservados que no se corresponden con caracteres."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "No se ha podido leer el directorio"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "No se pudo verificar"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "eliminando %s (se añadirá luego)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**atención** %s es un torrent duplicado para %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**advertencia** %s contiene errores"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "...exitoso"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "eliminando %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "comprobación completa"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "No se pudo verificar %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"No se pudo descargar o abrir \n%s\nIntente utilizar un explorador web para descargar el archivo torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Se requiere Python %s o más moderno"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+"Demasiado tarde para cambiar los backends de RawServer, %s ya ha sido utilizado."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Anuncio del rastreador no ha sido completado %d segundos después de comenzarlo"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema conectándose al rastreador, el comando gethostbyname falló -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema conectando al rastreador -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "datos erróneos provinientes del rastreador"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rechazado por el rastreador -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Abortando el archivo .torrent puesto que fue rechazado por el rastreador porque no estableció conexión con ninguna persona."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Mensaje del rastreador:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "Advertencia del rastreador -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "La búsqueda sin rastreador falló:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo errónea - no es un diccionario"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo errónea - partes malas de la clave"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo errónea - longitud de parte no válida"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo errónea - nombre erróneo"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "Nombre %s rechazado por motivos de seguridad"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "única/múltiple combinación de archivo(s)"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo errónea - longitud errónea"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo errónea - \"archivos\" no es una lista de archivos"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo errónea - la entrada de fichero debe ser un diccionario"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo errónea - ruta errónea"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo errónea - ruta del directorio errónea"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "ruta %s rechazada por motivos de seguridad"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo errónea - ruta duplicada"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "metainfo errónea - el archivo y el subdirectorio usan el mismo nombre"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo errónea - tipo de objeto erróneo"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo errónea - no hay anuncio de secuencia URL"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo errónea - el nodo no es una lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "metainfo errónea - la lista de nodos debe tener solo dos elementos"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "metainfo errónea - el host del nodo debe ser una cadena"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "metainfo errónea - el puerto del nodo debe ser un entero"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "la razón del fallo debe ser una cadena"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "el mensaje de advertencia debe ser una cadena"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"entrada inválida en lista de pares - la información de par debe ser un diccionario"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "entrada inválida en lista de pares - la IP del par debe ser una cadena"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"entrada inválida en lista de pares - el puerto del par debe ser un entero"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+"entrada inválida en lista de pares - identificación de par (peerid) inválido"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista de personas no válida"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "anuncio de intervalo no válido"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "anuncio de intervalo de minutos no válido"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id del rastreador no válida"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "número de personas no válido"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "número de compartidas no válido"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"última\" entrada no válida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Uso: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPCIONES][DIRECTORIOTORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Si uno de los argumentos no es una opción, se tomará como el valor\n de la opcion directorio_torrent.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPCIONES] [ARCHIVOSTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPCIONES] [ARCHIVOTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPCION] ARCHIVO URL_TRACKER[ARCHIVO]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "los argumentos son -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(por defecto"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "clave desconocida"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parámetro pasado al final sin ningún valor"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "el procesado de la línea de comandos falló en"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Se requiere la opción %s."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Debe proveer al menos %d argumentos."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Demasiados argumentos - %d máximo"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "formato equivocado de %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Puerto a la escucha."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "archivo para almacenar información reciente de descarga"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tiempo de espera para cerrar conexiones"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "segundos entre guardados del dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "segundos entre descargas a punto de expirar"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "segundos que deben esperar los descargadores entre reanuncios"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"Número por defecto de personas a las que enviar el mensaje de información si el cliente no ha especificado uno."
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"tiempo de espera entre comprobaciones de conexiones que han superado el tiempo de espera (timeout)"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"cuántas veces comprobar si el descargador está detras de una NAT (0 = no comprobar)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "añadir entradas al registro sobre resultados de comprobaciones de nat"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "tiempo mínimo de espera entre desague(flush) y desague"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"tiempo mínimo de espera antes de considerar un cache atorado y desaguarlo(flush)"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"sólo permitir descargas de .torrents en este directorio (y en subdirectorios que no contengan archivos .torrent). Si se establece, los torrents en este directorio se mostrarán en la página de información aunque no tengan personas"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permitir claves especiales a torrents en el allowed_dir (directorio permitido) que puedan afectar al acceso del rastreador."
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "reabrir o no el archivo log cuando se recibe una señal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"mostrar o no una página de información cuando se carga el directorio raíz del rastreador"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "un URL a donde redireccionar la página de información"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "mostrar o no nombres dentro del directorio permitido (allowed_dir)"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"archivo que contiene los datos en formato x-icon a devolver cuando el navegador pide el favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorar el parametro GET del ip de máquinas que no estén dentro de la red ip local (0 = nunca, 1 = siempre, 2= ignorar si la comprobacion de NAT está deshabilitada). Las cabeceras de proxy HTTP que dan la direccion del cliente original son tratadas como en --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"archivo en donde escribir los logs del tracker, usar - for stdout(por defecto)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"utilizar con directorio permitido (allowed_dir); agrega un /file? hash={hash} url que permite a los usuarios descargar el archivo torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"mantén los torrents muertos hasta después de que expiren (de manera que éstos se muestren en tu página de peticiones (scrape URL) / y página web). Solo importa si el directorio permitido (allowed_dir) no ha sido configurado."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "acceso a petición permitido ( puede ser ninguno, específico, o total)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "número máximo de personas para dar con cualquier solicitud"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"tu archivo puede existir en cualquier parte\ndel universo, excepto aquí\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**atención** el archivo favicon especificado -- %s -- no existe."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**atención** archivo de estado (statefile) %s corrupto; reconfigurando"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Registro iniciado:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**atención** no se puede redireccionar la salida estándar al archivo de registro:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Registro reiniciado"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**atención** no se puede reabrir el archivo de registro"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+"la función específica de la petición no se encuentra disponible con este rastreador."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+"la función de petición total no se encuentra disponible con este rastreador."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "la función \"obtener\" no se encuentra disponible con este rastreador."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"La descarga solicitada no se encuentra autorizada para su uso con este rastreador."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "ejecútese sin argumentos para explicaciones de parámetros"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Cerrando"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "No se puede comenzar dos instancias separadas del mismo torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Ocultar %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Mostrar %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "No es una secuencia válida bencoded"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "Valor bencoded no válido (datos después del prefijo válido)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport es menor que minport - no hay puertos a comprobar"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "No pudo abrirse un puerto de escucha: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "No pudo abrirse un puerto de escucha: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Compruebe la configuración de su rango de puertos"
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Arranque inicial"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "No se ha podido cargar los datos de reanudación rápida: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Se llevará a cabo una comprobación completa de trozos."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+"la pieza %d no superó la comprobación de trozos, descargándola de nuevo"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"El intento de descargar un torrent sin rastreador con un cliente sin rastreador fue suspendido."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "la descarga falló:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Error de E/S: No hay espacio suficiente en el disco, o no es posible crear un archivo tan grande:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "terminado por un error de E/S:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "terminado por un error de SO:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "terminado por una excepción interna:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Error adicional cuando se cerraba debido al error:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+"No se pudo eliminar el archivo de reanudación rápido después del fallo:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "compartiendo"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "No se han podido escribir los datos de reanudación rápida:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "cerrar"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Ésta parece ser una versión antigua de Python que no soporta la detección de la codificación de los archivos del sistema. Se asume 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python falló en autodetectar la codificación del sistema de archivos. Usando 'ascii' en su lugar."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"La codificación del sistema de archivos '%s' no está soportada. Usando 'ascii' en su lugar."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componente erróneo de la ruta del archivo:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Este archivo .torrent ha sido creado con una herramienta quebrada y tiene nombres de archivo incorrectamente codificados. Algunos o todos los nombres de archivo pueden aparecer diferente del lo que el creador del archivo .torrent quiso."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Este archivo .torrent ha sido creado con una herramienta quebrada y contiene valores de caracteres erróneos que no corresponden a ningún carácter real. Algunos o todos los nombres de archivo pueden aparecer diferente de lo que el creador del archivo .torrent quiso."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Este archivo .torrent ha sido creado con una herramienta quebrada y tiene archivos codificados incorrectamente. Los nombres pueden ser todavía correctos."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"El conjunto de caracteres usados en el sistema de archivos local (\"%s\") no puede representar todos los caracteres usados en el nombre de archivo de este torrent. Los nombres de archivo han sido cambiados del original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"El sistema de ficheros de Windows no puede manejar ciertos caracteres usados en el/los nombre(s) de fichero(s) de este torrent. Los nombres de fichero se han cambiado respecto al original."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Este archivo torrent ha sido creado con una herramienta quebrada y tiene cuando menos 1 archivo con un nombre inválido de archivo o directorio. Sin embargo puesto que tales archivos fueron marcados como si tuviesen una longitud de 0 esos archivos son simplemente ignorados."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Comando no manejado: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "No fue posible crear control de socket: ya está en uso"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+"No fue posible quitar el control de socket antiguo del nombre de archivo:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "No fue posible crear control de socket:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "No fue posible enviar el comando:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Ya se ha creado el mutex global."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "¡No se ha podido encontrar ningún puerto abierto!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "¡No se ha podido crear el directorio de datos de la aplicación!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"¡No se ha podido adquirir bloqueo de mutex global para el archivo de controlsocket!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Una instancia anterior de BT no fue cerrada correctamente. Continuando."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Se está ejecutando otra instancia de BT, pero \"%s\" no existe.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Probaré el puerto."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Puerto encontrado: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "No se pudo encontrar el puerto."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Estado IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Conversación DDE conectada."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "Falló desregistrar o cerrar el socket de servidor: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket del servidor perdido"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Error manejando conexión aceptada:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Se debe salir por un error en el apilado de TCP. Por favor, consulte Preguntas Frecuentes en %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "recibido un tipo de mensaje desconocido"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "espera de tiempo"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100644
index 0000000..b1e2ba7
--- /dev/null
+++ b/po/es_MX.po
@@ -0,0 +1,2869 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 10:47-0600\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instale Python %s o superior"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "estructura obsoleta, no usar"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Fallo de comunicación con otro proceso %s pero uno parece estar corriendo."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Cerrando todas las ventanas de %s puede solucionar el problema. "
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s ya está activo"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Fallo de comunicación con otro proceso %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s o superior requerido"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "arrastre para reordenar"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "click derecho para mostrar el menú"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "acceso telefónico"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable de hasta 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable de hasta 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL de hasta 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introducir dirección URL del torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introducir la dirección URL del torrent que se abrirá:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Velocidad máxima de subida"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Detener temporalmente todos los torrent"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Continuar descarga"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nueva %s versión disponible"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Una nueva versión de %s está disponible.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Estás usando %s, y la nueva versión es %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Siempre puedes obtener la nueva versión de \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Descargar_después"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Descargar_ahora"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Recordarme después"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Acerca de %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versión %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "No se puede abrir %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donar"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Registro de eventos"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Guardar registro en:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "registro guardado"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "registro borrado"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Configuracion "
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "General"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Abrir BitTorrent cuando Windows arranque"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizar a bandeja del sistema"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Texto de la barra de progreso siempre en\nnegro (requiere reinicio)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Guardando"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Guardar nuevas descargas en:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Cambiar..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Preguntar dónde guardar cada nueva descarga"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Descargando"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Cuando empiece con un nuevo torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Parar otro torrent activo para hacer espacio"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_No pare otros torrents activos"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Preguntar cada vez"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Compartiendo"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Compartir los torrents completados: hasta que el ratio llegue a [_] por ciento, o a [_] minutos, cualquiera que pase primero."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Compartir indefinidamente"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Compartir el último torrent descargado: hasta que el ratio llegue a [_] por ciento."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Red"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Buscar un puerto disponible:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Comenzando del puerto:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Permite mapeo automático de puerto"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP a reportar al rastreador:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(No tiene efecto en caso de estar\nen la misma red del rastreador)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ADVERTENCIA: El cambio de estos ajustes puede\nimpedir el funcionamiento apropiado de %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opción"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Escoger el directorio de descargas original"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Fallo al borrar el alias: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Archivos en \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nunca"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nunca descargar"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Descargar normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primero"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Descargar primero"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nombre del archivo"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Longitud"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Descarga"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nunca"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primero"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Personas para \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Dirección IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Cliente"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Conexión"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s descarga"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s subida"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB descargados"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB subidos"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completado"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. descarga de la persona"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID de la persona"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesado"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Ahogado"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Detenido"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Subida optimista"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remoto"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "Mala persona"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d malo"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "prohibido"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informacion para \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nombre del archivo .torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(archivo .torrent sin rastreador)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Anunciar url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en un archivo"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", en %d archivos"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Tamaño total:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Partes:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Información de trozos:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Guardar en:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nombre de archivo:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Abrir directorio"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrar _lista de archivos"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informacion del Torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Borrar el torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Cancelar torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", se compartirá por %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", se compartirá por tiempo indefinido."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Finalizado, tasa de compartimiento: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Finalizado, subido %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Finalizado"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informacion del torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista de archivos"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Lista de peers"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Cambiar ubicación"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Compartir indefinidamente"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Reiniciar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finalizar"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "Borrar"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Cancelar"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "¿Está seguro de querer borrar \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Su proporción de compartimiento para este torrent es de %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Ha subido %s a este torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "¿Borrar este torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Finalizado"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "arrastrar a la lista para compartir"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Fallado"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "arrastrar a la lista para continuar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Esperando"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pausado"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Ejecutando"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Subido actualmente: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Bajado actualmente: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Subido anterior: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Bajado anterior: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Tasa de compartimento: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s personas, %s compartidos. Totales desde el rastreador: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copias distribuidas: %d; Siguiente: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Partes: %d total, %d completos, %d parciales, %d activos (%d vacios)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d partes malas + %s con pedido de descarte"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% finalizado, %s restante"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Tasa de descarga"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Tasa de subida"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "No disponible"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s iniciado"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Salir"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "S_alir"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Abrir archivo .torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Abrir dirección _URL del torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Hacer archivo .torrent _nuevo"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/ Abrir"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostrar/Esconder archivos .torrent _terminados"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Cambiar a tamaño óptimo de ventana"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Registro"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "Ajustes"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ayuda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Sobre"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donar"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "Archivo"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ver"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Buscar torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(detenido)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(múltiple)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Ya se está descargando el instalador de %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "¿Instalar nuevo %s ahora?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "¿Desea salir de %s e instalar la nueva versión, %s, ahora?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Ayuda de %s está en \n%s\n¿Desea ir ahí ahora?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "¿Visitar la página de ayuda?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Hay un torrent finalizado en la lista."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "¿Desea eliminarlo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Hay %d torrents finalizados en la lista."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "¿Desea eliminarlos todos?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "¿Borrar todos los archivos .torrent terminados?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "No hay archivos .torrent terminados"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "No hay archivos .torrent terminados que remover."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Abrir archivo .torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Cambiar ubicación de guardados para"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "¡Archivo existente!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+"El archivo \"%s\" ya existe. ¿Desea elegir un nombre de archivo distinto?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Guardar ubicación para"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "¡Ya existe el directorio!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"Ya existe \"%s\". ¿Desea crear un duplicado idéntico del directorio dentro del directorio existente?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(mensaje global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Error"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Se han producido múltiples errores. Haga click en Aceptar para ver el registro de errores."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "¿Detener el torrent activo?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Va a comenzar la descarga de \"%s\". ¿Desea parar también otro torrent activo?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "¿Ud. ha donado?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bienvenido a la nueva versión de %s. ¿Ud. ha donado?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "¿Gracias!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"¡Gracias por donar! Para donar nuevamente, seleccione \"Donar\" en el menú \"Ayuda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+"No se pudo iniciar \"TorrentQueue\", consulte lo anterior para ver si hay errores."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "creador %s de archivo torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Hacer archivo torrent para este archivo/directorio:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Elegir..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(los directorios se convertirán en torrentes por lotes)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Tamaño de las partes:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Usar el _rastreador:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Usar _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Notas (opcional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Comentarios:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Hacer"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Puerto"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Construyendo torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Revisando el tamaño de los archivos..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Empezar a compartir"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "construyendo"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Hecho."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Finalizada la construcción de los torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "¡Error!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Error al construir los torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s o superior requerido"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d días"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dia %d horas"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d minutos"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutos"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d segundos"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 segundos"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ayuda"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Preguntas Frecuentes:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ir"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Elegir una carpeta existente..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Archivos Torrent (Torrents)"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Crear una nueva carpeta..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Seleccionar archivo"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Seleccionar carpeta"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "No se pudo cargar el estado guardado:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "No se pudo guardar el estado UI (Interfaz del Usuario):"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Estado inválido del contenido de los archivos"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Error leyendo archivo \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "No se puede restaurar el estado completamente"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Estado inválido del archivo (entrada duplicada)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Datos corruptos en \"%s\", no se puede reparar el torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash mismatch)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Estado inválido del archivo (Entrada Errónea)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Mal archivo del estado de UI (Interfaz del Usuario)"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Mala versión del archivo del estado de UI (Interfaz del Usuario)"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versión sin apoyo del archivo del estado de UI (Interface del Usuario) (¿De una version nueva del cliente?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "No se pudo borrar el archivo %s cacheado:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Este no es un archivo .torrent válido (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+"Este archivo .torrent (o uno con el mismo contenido) está funcionando ya."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Este archivo .torrent (o uno con el mismo contenido) está esperando para ser ejecutado."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "El archivo .torrent está en un estado desconocido %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "No se puede escribir el archivo"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"el archivo .torrent no será recomenzado correctamente cuando reinicie el cliente"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"No se puede ejecutar más de %d torrents simultáneamente. Para más información revise Preguntas Frecuentes en %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"No se puede descargar el torrent debido a que existen otros torrents esperando para ser ejecutados, y éste coincide con los ajustes para cuando se pare de compartir."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"No se comenzará este archivo .torrent ya que tiene los requisitos para parar de compartir el último archivo .torrent completado."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "No fue posible obtener la versión más reciente de %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "No fue posible analizar la cadena de caracteres de nueva versión de %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"No fue posible encontrar un ubicación temporal adecuada para guardar el instalador de %s%s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "No hay archivo torrent disponible para el instalador de %s%s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "El instalador %s %s parece estar incompleto, perdido, o corrupto."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "No se pudo activar el instalador en este Sistema Operativo"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Sin torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Comenzando descarga"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Funcionando normalmente"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Las descargas pueden ser lentas:\nProbablemente esté tras firewall/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Revise la conexión de red"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"el directorio en que datos como el de resumido rapido y el estado de GUI han sido guardados. Regresa a los 'datos' originales al subdirectorio del directorio bittorrent de config. "
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codificación de caracteres usados en el sistema de archivos local. Si fue dejada vacía, se autodetecta. La autodetección no funciona en versiones de python anteriores a 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Codigo ISO del lenguaje a usar"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"Reportar IP al rastreador (no tiene efecto a menos que se encuentre en la misma red de área local que el rastreador)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"puerto visible al mundo si es diferente del que el cliente enlista localmente"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"puerto mínimo que se debe enlistar, la cuenta incremente si no está disponible"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "puerto máximo que se debe enlistar"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP que se debe atar localmente"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "segundos entre actualizaciones de la información exhibida"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutos que se deben de esperar entre peticiones de más personas"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "numero mínimo de personas al que no se debe rehacer la petición"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "número de personas al cual se debe detener nuevas conexiones"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "máximo número de salidas de conexión incompletas"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"número máximo de conexiones permitidas, después de esta conexión que se aproxima serán cerradas inmediatamente"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "si se deben comprobar los trozos del disco o no"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "máximo número de kB/s al cual se debe subir, 0 significa sin limite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "número de subidas que se debe llenar con optimismo extra de desahogos "
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"número máximo de archivos .torrent que se deben quedar abiertos a la vez en un multi-archivo .torrent, 0 significa sin límite, Usado para evadir el agotamiento de descriptores de archivos. "
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicializa un cliente sin rastreador. Debe activarse para poder descargar torrents sin rastreador."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "número de segundos que se debe pausar entre enviados de revividores"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "cuántos bytes a preguntar por cada petición."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"el prefijo máximo de la longitud que le codifica que se aceptará sobre el alambre - valores más grandes consiguen que la conexión caiga."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"segundos a esperar entre el cierre de zócalos en donde no se ha recibido nada."
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "segundos a esperar entre el chequeo de conexiones fallidas"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"slice máximo de la longitud a enviar a las personas, cerrar conexión si se recibe una petición más grande"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"intervalo de tiempo máximo en el cual se estiman las tasas actuales de subida y descarga"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"intervalo de tiempo máximo en el cual se estima la tasa actual de compartido"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"tiempo máximo que se debe esperar entre repetición de anuncios si continuan fallando"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"segundos a esperar por datos a llegar sobre una conexion antes de asumir que esta ahogada parcialmente permanente"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"número de descargas al cual se debe cambiar de al azar a más raro primero"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+"cantidad de bytes al que se debe escribir en la red de almacenadores intermediarios a la vez"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"rechaza conexiones futuras de las direcciones con personas quebradas u hostiles que envían datos incorrectos a propósito y con mala intención"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "no conectarse a varias personas con la misma dirección IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"si es distinto a cero, fije la opción de la TOS para las conexiones de personaa este valor"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"permitir una forma de evadir un error en BSD libc que hace que los archivos sean leídos a una velocidad muy lenta."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+"dirección de HTTP proxy que se debe usar para las conexiones del rastreador"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "cerrar conexiones con RST y evitar el estado TIME_WAIT de TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Usar bibliotecas de red Trenzada para las conexiones de red. 1 significa usar trenzadas, 0 no trenzadas y -1 autodetectar y preferir trenzadas"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nombre del archivo (para archivos .torrents de un solo archivo) o nombre del directorio (para archivos .torrent hornados) donde se guardará el archivo .torrent, eliminar el nombre original en el archivo .torrent. Ver también -guardar_en. si no se especifica ninguno se le pedirá al usuario una ubicacion donde guardar"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "exhibir la interfaz de usuario avanzado"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"número de minutos máximos que se debe compartir el fichero .torrent antes de detenerse"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"tasa mínima de subida/bajada, en porcentaje, para alcanzar antes de parar de compartir el torrent. 0 se usa para sin límite."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"tasa mínima de subida/bajada, en porcentaje, para alcanzar antes de parar de compartir el último torrent. 0 se usa para sin límite."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Compartir cada archivo torrent terminado indefinidamente (hasta que el usuario lo cancele)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Compartir el último archivo torrent indefinidamente (hasta que el usuario lo cancele)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "iniciar el programa en estado pausado"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"especificar cómo debe comportarse la aplicación cuando el usuario trata de iniciar manualmente otro torrent: \"reemplazar\" quiere decir reemplazar el torrent activo por el nuevo, \"agregar\" quiere decir agregar el torrent en paralelo, y \"preguntar\" se usa para preguntar al usuario cada vez."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Comenzar BitTorrent minimizado"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"sobrescribe la versión de la comprobación de versión de http y permite modo de depuración de la comprobación de versión"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"sobrescribe la versión actual usada en la comprobación de versión y permite modo de depuración de comprobación de versión"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"especifique tamaño y posición de ventana, formato:ANCHOxALTO+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nombre de archivo (para torrents de un solo archivo) o nombre de directorio(para torrents por lotes) para guardar como, sobreescribiendo el nombre por defecto especificado en el torrent.Vea también --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"el número permitido de subidas a la vez.-1 (ojala) significa un número razonable basandose en la --tasa de_subida_máxima. Los valores automáticos son sensibles únicamente cuando se activa un archivo torrent a la vez."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directorio local donde el contenido del torrent se guardará. El archivo (torrents de 1 solo archivo) o directorio (torrents por lotes) será creado en este directorio usando el nombre por defecto especificado en el archivo .torrent. Vea también --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"para determinar si preguntar o no el lugar en donde guardar los archivos descargados"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"el directorio local en donde guardar los torrents, usando un nombre determinado por --saveas_style. Si se deja en blanco, cada torrent se guardará en el directorio donde se encuentra el correspondiente archivo .torrent"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "cada cuándo volver a detectar el directorio de torrents, en segundos"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"espere estos segundos antes de iniciar un torrent que acaba de notar, para evitar adelantarse al tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Cómo nombrar las descargas de torrents: 1: utilice el nombre DEL archivo torrent (menos .torrent); 2:utilice el nombre codificado EN el archivo torrent; 3: cree un directorio con el nombre DEL archivo torrent (menos .torrent) y guardelo en ese directorio utilizando el nombre codificado EN el archivo torrent; 4: si el nombre DEL archivo torrent (menos .torrent) y el nombre codificado EN el archivo torrent son idénticos, utilice ese nombre (estilo 1/2),si no, cree un directorio intermedio del estilo 3; PRECAUCIÓN: opciones 1 y 2 tienen la habilidad de sobreescribir archivos sin avisar y esto puede presentar problemas de seguridad."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"mostrar o no la ruta completa o el contenido del torrent por cada torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directorio en donde buscar por archivos .torrent (semi-recursivo)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "mostrar o no informacion de diagnóstico en stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "a qué potencia de dos configurar el tamaño de las partes"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nombre por defecto del rastreador"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"si es falso entonces haga un torrent sin rastreador, en lugar de la URL de announce utilice un puerto seguro de la forma <ip>:<puerto> o una cadena vacía para tirar algunos nodos de su tabla de enrutamiento"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "¡descarga completa!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<desconocido>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "terminando en %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "descarga existosa"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB sub / %.1f MB desc)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB sub / %.1f MB desc)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d vistas ahora, más %d copias distribuidas (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d copias distribuidas (siguiente: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d vistas ahora"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERROR:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "guardando:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "tamaño del archivo:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "porcentaje hecho:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tiempo restante:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "descarga en:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "ratio de descarga:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "ratio de subida:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "Calificación por compartir:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "estado de compartido:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "estado de la persona:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "No puede especificar ni --save_as ni --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "cerrando"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Error leyendo configuración:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Error al leer el archivo .torrent:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "debe especificar un archivo .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Fallo en la inicialización de la IGU (GUI)en modo texto, imposible seguir."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Esta interfaz de descarga necesita el módulo estándar de Python \"curses\", que desafortunadamente no está disponible para el puerto nativo de Windows de Python. De cualquier modo, está disponible para el puerto Cygwin de Python, que se ejecuta en todos los sistemas Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Aún puede usar la \"consola-bittorrent\" para descargar."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "archivo:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "tamaño:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progreso:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "estado:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "velocidad de la descarga:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "velocidad de la subida:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "compartiendo:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "compartidas:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "personas:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d vistas ahora, más %d copias distribuidas(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "error(es):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "error:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Subida Descarga Completado Velocidad"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"descargando %d piezas, tiene %d fragmentos, %d de %d piezas completadas"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Estos errores se han producido durante la ejecución:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s TRACKER_URL[ARCHIVOTORRENT[ARCHIVOTORRENT ...]]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "announce antiguo para %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "no hay torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERROR DEL SISTEMA - SE HA GENERADO UNA EXCEPCIÓN"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Advertencia:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "no es un directorio"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+"error: %s\nejecute sin argumentos para una explicación de los parámetros"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPCIÓN:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Todavía puede utilizar \"btdownloadheadless.py\" para la descarga."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "conectando a personas"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tiempo Estimado de Llegada (ETA) en %d:%02d:%02d "
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Tamaño"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Subida"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totales:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s personas %s compartidos %s copias dist - %s descarga %s subida"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "error:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nejecute sin argumentos para una explicación de los parámetros"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "comentario opcional legible por humanos para poner en el .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "archivo objetivo opcional para el torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodifica %s archivos de metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s [ARCHIVOTORRENT[ARCHIVoTORRENT ...]]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "archivo de metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "trozo de información:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nombre de archivo: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "tamaño de archivo:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "archivos:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nombre del directorio: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "tamaño de archivo:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "rastreador de url announce: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nodos sin rastreador:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentario:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Lun"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mié"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Jue"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Vie"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sáb"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dom"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Ene"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Abr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "May"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ago"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Oct"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dic"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Comprimido: %i Sin Comprimir: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "No fue posible guardar permanentemente los opciones:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Error leyendo el archivo de configuración. Antiguo archivo de configuración guardado en \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "El archivo %s pertenece a otro archivo .torrent en funcionamiento"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "El archivo %s ya existe, pero no es un archivo regular"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lectura corta - ¿algo truncó a los archivos?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formato sin apoyo del archivo de resumido rápido, ¿tal vez otra versión del cliente? "
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "No se logró leer los datos de resumido rápido:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Datos erróneos en el archivo de respuesta - El total es muy pequeño"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "Datos erróneos en el archivo de respuesta - El total es muy grande"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "revisando archivo existente"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--comprobar_trozos 0 o la información de resumido rápido no coincidió con el estado de algún archivo (Faltan Datos)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Información errónea de resumido rápido (Los archivos contienen más datos)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Información errónea de resumido rápido (Valor Ilegal)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "Datos corruptos en el disco - ¿tal vez posees dos copias activas?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"El archivo se completó al inicio, pero fallo en la comprobación de trozos"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "No se ha podido establecer el manipulador de señal:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "eliminado \"%s/\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "añadido \"%s/\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "esperando la comprobación de trozos"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "descargando"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "releyendo el archivo de configuración"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"No se puede especificar el nombre del archivo .torrent al generar varios torrents simultáneamente"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "El juego de caracteres \"%s\" no está soportado en esta versión"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"No se puede convertir el nombre del archivo/directorio \"%s\" a utf-8 (%s). O el nombre de archivo \"%s\" es incorrecto o contiene caracteres ilegales."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"El nombre de archivo/directorio \"%s\" contiene valores unicode reservados que no se corresponden con caracteres."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "No se ha podido leer el directorio"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "No se pudo verificar"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "eliminando %s (se añadirá luego)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**atención** %s es un torrent duplicado para %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**advertencia** %s contiene errores"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "...exitoso"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "eliminando %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "comprobación completa"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "No se pudo verificar %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"No se pudo descargar o abrir \n%s\nIntente utilizar un explorador web para descargar el archivo torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+"Demasiado tarde para cambiar a terminaciones de RawServer, %s ya se ha utilizado"
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"El anuncio del rastreador no ha sido completado %d segundos después de comenzarlo"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema conectándose al rastreador, falló gethostbyname -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema conectando al rastreador -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "datos erróneos provenientes del rastreador"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rechazado por el rastreador -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Abortando el archivo .torrent puesto que fue rechazado por el rastreador porque no estableció conexión con ninguna persona."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Mensaje del rastreador:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "Advertencia del rastreador -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo errónea - no es un diccionario"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo errónea - piezas malas de la llave"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo errónea - longitud ilegal de la pieza"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo errónea - nombre erróneo"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "Nombre %s rechazado por questiones de seguridad"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "combinación única/multiple de archivo(s)"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "matainfo errónea - longitud errónea"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo errónea - \"archivos \" no es una lista de archivos"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metaifo errónea - destinación errónea"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo errónea - destinación del directorio errónea"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "destinación %s rechazada por questiones de seguridad"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo errónea - destinación duplicada"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo errónea - el nombre está siendo usado como ambos nombre del archivo y nombre del subdirectorio"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo errónea - tipo de objeto erróneo"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo errónea - no hay anuncio de secuencia URL"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista inválida de personas"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "anuncio inválido de intervalo"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "anuncio de intervalo inválido de min"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id del rastreador inválida"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "cuenta inválida de personas"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "cuenta inválida de compartidas"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"última\" entrada inválida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Uso: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPCIONES][DIRECTORIOTORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Si uno de los argumentos no es una opción, se tomará como el valor\n de la opcion directorio_torrent.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPCIONES] [ARCHIVOSTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPCIONES] [ARCHIVOTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPCION] ARCHIVO URL_TRACKER[ARCHIVO]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "los argumentos son -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(por defecto a"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "clave desconocida"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parámetro pasado al final sin ningún valor"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "el procesado de la línea de comandos falló en"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Se requiere la opción %s."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Debe dar almenos _%d de argumentos."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Demasiados argumentos - %d máximo."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "formato equivocado de %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Puerto a la escucha."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "archivo para almacenar información reciente de descarga"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tiempo de espera para cerrar conexiones"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "segundos entre guardados del dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "segundos entre descargas a punto de expirar"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "segundos que deben esperar los descargadores entre reanuncios"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"número automático de personas al cual se les enviará un mensaje de información si no especifica un número el cliente "
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"tiempo de espera entre comprobaciones por conexiones que han superado el tiempo de espera (timeout)"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"cuántas veces comprobar si el descargador está detras de una NAT (0 = no comprobar)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "añadir entradas al registro sobre resultados de comprobaciones de nat"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "mínimo tiempo a esperar entre limpieza(flush) y limpieza"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"mínimo tiempo en segundos a esperar antes de considerar un cache atorado y limpiarlo"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"sólo permitir descargas de .torrents en este directorio (y en subdirectorios que no contengan archivos .torrent). Si se establece, los torrents en este directorio se mostrarán en la página de información aunque no tengan personas"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permitir claves especiales afectar el acceso al tracker en torrentes dentro del directory permitido (allowed_dir)"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+"reabrir o no el archivo de bitacora(log) cuando se recibe una señal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"mostrar o no una pagina de información cuando el directorio raíz del rastreadores cargado"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "un URL a donde redireccionar la página de información"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "mostrar o no nombres dentro del directorio permitido (allowed_dir)"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"archivo que contiene los datos en formato x-icon a devolver cuando el navegador pide el favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorar el parámetro GET del ip de máquinas las cuales no estén dentro de la red ip local (0 = nunca, 1 = siempre, 2= ignorar si la comprobación de NAT esta deshabilitada).Las cabeceras de proxy HTTP que dan la dirección del cliente original son tratadas como en --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"archivo en donde escribir la bitácora del rastreador, usar - para usar stdout(por defecto)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"utilizar con _dir permitido; agrega un /archivo? hash={hash} url que permite a los usuarios descargar el archivo torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"mantén los torrents muertos hasta despúes de que expiren (de manera que estos se muestren en tu página de peticiones (scrape URL) / y página web). Solo importa si el _dir permitido no se encuentra listo."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "acceso a petición permitido ( puede ser ninguna, específica, o total)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "número máximo de personas para dar con cualquier solicitud"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"tu archivo puede existir en cualquier otra parte del universo\npero por lo menos, no aquí\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**atención** el archivo favicon especificado -- %s -- no existe."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**atención** archivo de estado (statefile) %s corrupto; reconfigurando"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Registro Iniciado:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**atención** no se puede redireccionar la salida estandar al archivo de registro:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Registro reiniciado"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**atención** no se puede reabrir el archivo de registro"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+"la función específica de la petición no se encuentra disponible con este tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+"la función de petición total no se encuentra disponible con este rastreador."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "la función \"obtener\" no se encuentra disponible con este rastreador."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"La descarga solicitada no se encuentra autorizada para su uso con este rastreador."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "ejecútese sin argumentos para explicaciones de parámetros"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Cerrando"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "No se puede comenzar dos instancias separadas del mismo torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "No es una secuencia válida bencoded"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "Valor bencoded inválido (datos después del prefijo válido)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport es menor que minport - no hay puertos a comprobar"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "No pudo abrirse un puerto de escucha: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "No pudo abrirse un puerto de escucha: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Compruebe la configuración de su rango de puertos"
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Arranque inicial"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "No pudo cargar datos de resumido rápido: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Se llevará a cabo una comprobación completa de trozos."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+"la pieza %d no superó la comprobación de trozos, descargándola de nuevo"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Intento de descargar archivo torrent sin rastreador con un cliente sin rastreador fue apagado/terminado."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "la descarga falló:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Error de E/S: No hay espacio suficiente en el disco, on no es posible crear un archivo tan grande:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "terminado por un error de E/S:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "terminado por un error de SO:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "terminado por una excepción interna:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Error adicional cuando se cerraba debido al error:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+"No se pudo eliminar el archivo de reanudación rápido después del fallo:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "compartiendo"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "No se ha podido escribir los datos de reanudación rápida:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "cerrar"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Ésta parece ser una versión antigua de Python que no soporta la detección de la codificación de los archivos del sistema. Se asume 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python falló en autodetectar la codificación del sistema de archivos. Usando 'ascii' en su lugar."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"La codificación del sistema de archivos '%s' no está soportada. Usando 'ascii' en su lugar."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componente erróneo de la ruta del archivo:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Este archivo .torrent ha sido creado con una archivo incorrectamente codificados. Algunos o todos los nombres de archivo pueden aparecer diferente de lo que el creador del archivo .torrent quiso."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Este archivo .torrent ha sido creado con una herramienta quebrada y contiene valores de caracteres erróneos que no corresponden a ningun caracter real. Algunos o todos los nombres de archivo pueden aparecer diferente de lo que el creador del archivo .torrent quiso."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Este archivo .torrent ha sido creado con una herramienta quebrada y tiene archivos codificados incorrectamente. Los nombres pueden ser todavía correctos."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"El conjunto de caracteres usados en el sistema de archivos local (\"%s\") no puede representar todos los caracteres usados en el nombre de archivo de este torrent. Los nombres de archivo han sido cambiados del original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Este archivo torrent ha sido creado con una herramienta quebrada y tiene cuando menos 1 archivo con un nombre inválido del archivo o directorio. Sin embargo puesto que tales archivos fueron marcados como si tuviesen una longitud de 0 esos archivos son simplemente ignorados."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "No fue posible crear control de socket: ya está en uso"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+"No fue posible quitar el control de socket antiguo del nombre de archivo:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "No fue posible crear control de socket:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "No fue posible enviar comandos:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Ya se creó el mutex global."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "No se pudo encontrar un puerto abierto."
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "No se pudo crear un directorio de datos de las aplicaciones."
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"No se pudo adquirir bloqueo de global mutex para el archivo de controlsocket."
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "No se limpió bien una instancia anterior de BT. Continuando."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "zócalo perdido del servidor"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Error manejando conexión aceptada:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Se debe salir ya que el apilado de TCP forma escamas hacia fuere. Favor vea las preguntas comunmete preguntadas en %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/et.po b/po/et.po
new file mode 100644
index 0000000..9a181d1
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,2888 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-08 06:55-0800\n"
+"Last-Translator: eerik mägi <eerik46@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Paigalda Python %s või uuem"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s jookseb juba"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Vajalik on PyGTK %s või uuem"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "ümbertõstmiseks lohista"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "menüü valimiseks tee parem hiireklikk "
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "sissehelistamine"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/liin 128k ja rohkem"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/liin 256k ja rohkem"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL/liin 768k ja rohkem"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Sisesta 'torrent'i URL aadress"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Sisesta avatava 'torrent'i URL:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Suurim üleslaadimise kiirus:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Ajutiselt peata kôik jooksvad 'torrentid'"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Taasta allalaadimised:"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Uus %s -i versioon saadaval"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Uuem versioon %s -st on saadaval. \n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Kasutad %s, ja uuem versioon on %s. \n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Sa vôid alati saada värskeima versiooni \n"
+" %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Alla laadida _hiljem"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Alla laadida _praegu"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Tuleta meelde hiljem"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Selle %s kohta "
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beeta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versioon %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s'i ei suudeta avada"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Anneta"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Aktiivsuslogi"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Salvesta logi sinna:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Logi salvestatud"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Logi puhastatud"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s sättingud"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Tava"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Käivita BitTorrent, kui Windows tööle läheb"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Progressiriba tekst on alati must \n"
+"(vajab programmi uuesti käivitamist)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Salvestamas"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Salvesta uued allalaadimised sinna:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Muuda..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Küsi iga allalaadimise puhul kuhu salvestada "
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Laen alla"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "_Seemenda"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Seemenda lõpetatud torrenteid: kuni jagamistase jõuab [_] protsendini või "
+"[_] minutit. Oleneb, et kumb enne lõpetab."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seemenda lõpmatuseni"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seemenda viimast lôpetatud torrentit: kuni jagamise suhe jôuab [_] "
+"protsendini"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Arvutivôrk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Otsi vaba porti:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Alustab pordist:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP aadress, mida jälitajale öelda:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Ei ole efektiivne kui sa ei ole \n"
+"samas lokaalvôrgus jälitajaga)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"HOIATUS: Nende sätete muutmisel võib\n"
+"%s enam mitte töötada."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Valik"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Väärtus"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Vali vaikimisi tavaline kaust, kuhu asjad alla laadida."
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Mitte kunagi alla laadida"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Faili nimi"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Suurus"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Jagajad \"%s\"-le"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP aadress"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Ühendus"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s allalaadimine"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s üleslaadmine"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB allaleatud"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB üleslaetud"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% valmis"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistlik üleslaadimine"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "Lokaalne"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "Halb jagaja"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d korras"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d mitte korras"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info \"%s\"-le"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrenti nimi"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", ühes failis"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", %d failis"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Suurus kokku:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Salvestuskoht:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Faili nimi:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Ava kaust"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrenti info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Eemalda torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Peata torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", seemenda igaveseni."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Valmis, jagamistase %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Valmis, %s üleslaetud"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Valmis"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrenti _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Faili nimekiri"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Muuda asukohta"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Seemendada igaveseni"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Alustada _uuesti"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Lõpeta"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Eemalda"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Peata"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Kas sa oled kindel, et soovid eemaldada \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Sinu jagamistase selle torrentiga on %d%%"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Eemalda see torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Lõpetatud"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "lohista nimekirja, et seemendada"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Ebaõnnestus"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "lohista nimekirja, et jätkata"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Ootab"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Peatatud"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Töötab"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Allalaadimise tase"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Üleslaadimise tase"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Välju"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Ava torrenti fail"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Ava torrent _interneti kaudu"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Tee _uus torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Paus/Edasi"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Näita/Peida _lõpetatud torrenteid"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Seaded"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Abi"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Info"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Anneta raha"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fail"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Vaata"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Otsi torrenteid"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(peatatud)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 päev ja %d tundi"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Torrentid puuduvad"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Töötab normaalselt"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port millel kuulata."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..14315ad
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,2876 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-27 11:41-0700\n"
+"Last-Translator: 3ARRANO.com <3arrano@3arrano.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr ""
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr ""
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr ""
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kablea 128k-tik gora"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kablea 256k-tik gora"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k-tik gora"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr ""
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr ""
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr ""
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Sartu zaparradaren URLa"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Sartu ireki beharreko bit-zaparrada fitxategi baten URLa:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr ""
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr ""
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr ""
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr ""
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr ""
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr ""
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr ""
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr ""
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/fa.po b/po/fa.po
new file mode 100644
index 0000000..024ce76
--- /dev/null
+++ b/po/fa.po
@@ -0,0 +1,2884 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-06 02:45-0800\n"
+"Last-Translator: M.Mahmoudi <sir.w0lf@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %s یا جدیدتر را نصب کنید"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "از ارتباط با %s دیگر منصرف شدیم ولی به نظر در حال اجرا می آید."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "در حال بستن تمامی %s شاید ویندوز مشکل را رفع کند."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s در حال اجرا میباشد"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "از ارتباط با %s دیگر منصرف شدیم."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s یا جدیدتر لازم است"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "برای مرتب سازی مجدد بکشید"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "برای منو راست کلیک کنید"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k یا بالاتر"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 128k یا بالاتر"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k یا بالاتر"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "آدرس torrent را وارد کنید"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "آدرس یک فایل torrent را برای خواندن وارد کنی:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "حراکثر سرعت upload:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "سریعا تمام دانلود های فعال را متوقف کن"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "ادامه دانلود کردن"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "نسخه جدید %s آماده است"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "نسخه جدیدی از %s آماده است.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "شما در حال استفاده از نسخه %s هستید و نسخه جدید %s است.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"شما همواره میتوانید نسخه جدید را از زیر دریافت نمایید: \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "_بعدا دریافت کن"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "_الان دریافت کن"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_مرا بعدا مطلع ساز"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "درباره %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "آزمایشی"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "نسخه %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "نمیتوان %s را خواند"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "کمک مالی"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "گزارش کارکرد %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "گزارش کار را در انجا ذخیره کن:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "گزارش کار ذخیره گردید"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "گزارش کار پاک شد"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "تنظیمات %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "اصلی"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "باز کردن BitTorrent هنگام شروع ویندوز"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "به system tray بفررست"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"متن نوار Progress همواره مشکی باشد\n"
+"(به اجرای مجدد نیاز دارد)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "در حال ذخیره سازی"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "دریافتیهای جدید را ذخیره ساز در:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "تخییر..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "بپرس تا دریافت جدید کجا ذخیره شود"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "در حال دریافت"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "هر وقت torrent جدید را شروع کرد:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "torrent در حال اجرای دیگر را برای باز کردن فضا _متوقف ساز"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "torrent های در اجرای دیگر را متوقف _نساز"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_هروقت بپرس"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "در حال جستجو کردن"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "سید مبهم"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "شبکه"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "برای درگاه های قابل استفاده جستجو کن:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "شروع از درگاه:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP برای گزارش به tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+")تا وگتی که شما با tracker در یک شبکه محلی\n"
+"هستید تاثیر ندارد("
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"اخطار: تعویض این تنظیمات ممکن است\n"
+"مانع اجرای صحیح %s شود."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "گزینه"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "مقدار"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "پیشرفته"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "پوشه پیشفرض دریافت را انتخاب کنید:"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "قادر به پاک کردن میانبر نیست: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "فایلهای داخل \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "هرگز"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "هرگز دریافت نکن"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "معمولی"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "بطور معمول دریافت کن"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "اولا"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "ابتدا دریافت کن"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "اسم فایل"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "درازا"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "دریافت"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "هرگز"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "اولین"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "%s حمتا"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "آدرس IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "کلاینت"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "ارتباط"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "سرعت دریافت برحسب KB/s"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "سرعت آپلود برحسب KB/s"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "مگابایت دریافت شده"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "مگابایت آپلود شده"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% تمام شده"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "کیلو بایت/ثانیه پیر دانلود"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "نام کاربری پیر"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "مورد علاقه"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "مسدود شده"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "از راه دور"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "محلی"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d بله"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d بد"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "بله"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "اطلاعات برای \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "نام torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr "، در یک فایل"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr "، در %d فایل"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "اندازه نهایی:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "تکه ها:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "هش اطلاعات:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "ذخیره کن در:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "نام فایل:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "پوشه _باز"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "لیست _فایل را نشان بده"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "اطلاعات torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "حذف torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "انصراف از torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr "، سرعت برای %s خواهد بود"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "اتمام، %s آپلود شد"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "اتمام"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_اطلاعات torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "لیست _فایل"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "لیست _پیر"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "تغییر _محل"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_شروع مجدد"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "ا_تمام"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_پاک کردن"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "ان_صراف"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "آیا مطمعن هستبد که \"%s\" را پاک کنید؟"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "شما %s به این torrent آپلود کردید."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "این torrent را پاک کند؟"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "تمام شد"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "برای ادامه به لیست بیندازید"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "درحال انتظار"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "درحال اجرا"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..3a9e618
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,2830 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 12:10-0800\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Asenna Pythonin versio %s tai uudempi"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "vanhentunut, älä käytä"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Kommunikaatio epäonnistui toisen %s:n prosessin kanssa, mutta yksi on käynnissä."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Kaikkien %s ikkunoiden sulkeminen saattaa korjata vian."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s on jo käynnissä"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kommunikaatio epäonnistui toisen %s :n prosessin kanssa"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Vaaditaan PyGTK:n versio %s tai uudempi"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "siirrä uudelleenjärjestääksesi"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "hiiren oikea-napautus avaa valikon"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Puhelinverkkoyhteys modeemilla."
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kaapeli 128k-lähetysnopeudella"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kaapeli 256k-lähetysnopeudella"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k-lähetysnopeudella"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Syötä torrent-tiedoston URL-osoite"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Syötä sen torrent-tiedoston URL-osoite, jonka haluat avata:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Enimmäislähetysnopeus:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Pysäytä kaikki käynnissä olevat torrentit väliaikaisesti."
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Jatka latausta"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Uusi versio saatavilla: %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "%s:n uudempi versio on saatavilla.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Käytät versiota %s, uusi versio on %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Saat uusimman version aina täältä:\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Lataa _myöhemmin"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Lataa _heti"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "M_uistuta myöhemmin"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Tietoja: %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Betaversio"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versio %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Ei pysty avaamaan %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Lahjoita"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Loki: %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Tallenna loki kansioon:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "loki tallennettu"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "loki tyhjennetty"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s asetukset"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Yleinen"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Avaa BitTorrent Windowsin käynnistyessä"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Pienennä ikkuna ilmaisinalueelle"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Edistyspalkin teksti on aina musta\n(vaatii uudelleenkäynnistämisen)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Tallennetaan"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Tallenna uudet lataukset kansioon:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Vaihda..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Kysy aina tallennuskansiota"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Ladataan"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Kun uusi torrent käynnistyy:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Pysäytä toinen torrent ja käynnistä uusi sen tilalle"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Älä pysäytä muita torrentteja"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Kysy joka kerta"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Lähettäminen"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Lähetä valmiit lataukset: kunnes lataussuhde on [_] prosenttia tai [_] minuutin ajan, kumpi ehto täytyy ensin."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Lähetä rajoituksitta"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Lähetä viimeisin valmis lataus: kunnes lataussuhde on [_] prosenttia."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Verkko"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Etsi avointa porttia:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "alkaen portista: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Käynnistä automaattinen portin kartoitus"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP raportoi trakkerille:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Ei vaikutusta paitsi, jos olet samalla\n lähiverkkoalueella kuin trakkeri)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"VAROITUS: Näiden asetusten muuttaminen voi\n estää %s asianmukaisen toimimisen."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Valinta"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Arvo"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Lisäasetukset"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Valitse oletustallennuskansio"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Pikakuvakkeen poisto epäonnistui: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Tiedostolista \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Ei koskaan"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Älä lataa"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normaali"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Lataa normaalisti"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Ensimmäinen"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Lataa ensimmäiseksi"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Tiedostonimi"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Koko"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Lataa"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "ei koskaan"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "ensin"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Toiset \"%s\" lataajat"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-osoite"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Asiakas"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Yhteys"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "Kt/s latausnopeus"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "Kt/s lähetysnopeus"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "Mt ladattu"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "Mt lähetetty"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% valmiina"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "Kt/s latausnopeusarvio"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Toisen lataajan ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Kiinnostunut"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Tukehtunut"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Unohdettu"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistinen lähetys"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "etä"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "paikallinen"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "huono toinen lataaja"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d huono(a)"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "poissuljettu"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Tietoja: \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentin nimi:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(lataus ilman trakkeria)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Ilmoitus-URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", yhdessä tiedostossa."
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", %d tiedostossa"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Koko yhteensä:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Paloja:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Tarkistussumma:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Tallenna:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Tiedostonimi:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Avaa kansio"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Näytä tiedosto_lista"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrentin tiedot"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Poista torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Keskeytä torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", jakoraja %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", jakaa loputtomasti."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Valmis, jakosuhde %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Valmis, %s lähetetty"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Valmis"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Tietoa _torrentista"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Tiedosto_lista"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Toisten lataajien lista"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Vaihda sijaintia"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Lähetä rajattomasti"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Aloita _uudelleen"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Lopeta"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Poista"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Keskeytä"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Haluatko varmasti poistaa \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Jakosuhteesi tälle torrentille on %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Olet lähettänyt %s tätä torrentia. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Poista tämä torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Valmis"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "vedä listaan jakaaksesi"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Epäonnistui"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "vedä listaan jatkaaksesi"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Odottaa"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Keskeytetty"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Toiminnassa"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Nykyinen lähetys: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Nykyinen lataus: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Edellinen lähetys: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Edellinen lataus: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Jakosuhde: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s toista lataajaa, %s lähdettä. Yhteensä trakkerilla: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Jaettuja kopioita: %d; Seuraava: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Paloja: %d yhteensä, %d valmiina, %d osittain, %d toiminnassa (%d tyhjiä)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d huonoa palaa + %s hylätyissä pyynnöissä"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% valmiina, %s jäljellä"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Latausnopeus"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Lähetysnopeus"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA, ei tietoa"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s aloitettu"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Lopeta"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "P_oistu"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Avaa torrent-tiedosto"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Avaa torrentin _URL-osoite"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "_Tee uusi torrent-tiedosto"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pysäytä/Jatka"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Näytä/Piilota _valmiit torrentit"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Muuta ikkunan kokoa"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "L_oki"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Asetukset"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ohje"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Tietoja"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "Lah_joita"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Tiedosto"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Näytä"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Etsi torrenteja"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(pysäytetty)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(useita)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Lataa jo %s asentajaa"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Asennetaanko uusi %s nyt?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Haluatko sulkea %s ja asentaa uuden version %s nyt?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s ohje on osoitteessa\n%s\nHaluatko siirtyä sinne nyt?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Siirry ohjesivustolle?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Yksi torrent valmis listalla. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Haluatko poistaa sen?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Listalla %d valmista torrenttia. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Haluatko poistaa ne kaikki?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Poista kaikki valmiit torrentit?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Ei valmiita torrentteja"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Ei valmiita torrentteja poistettavaksi."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Avaa torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Muuta tallennuskansioksi "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Tiedosto on olemassa!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" on jo olemassa. Haluatko valita toisen tiedostonimen?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Tallennuskohde "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Kansio on olemassa!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" on jo olemassa. Aiotko luoda identtisen kaksoiskappaleen kansiosta olemassaolevan kansion sisälle?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(yleinen viesti): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Virhe"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Useita virheitä tapahtunut. Valitse OK nähdäksesi virhelokin."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Pysäytä aktiivinen torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Olet aloittamassa torrentia \"%s\". Haluatko pysäyttää toisen päällä olevan torrentin?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Oletko jo lahjoittanut?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Tervetuloa uuteen %s versioon. Oletko jo lahjoittanut?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Kiitos!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Kiitos lahjoituksesta! Lahjoittaaksesi uudelleen valitse \"Ohje\"-valikosta \"Lahjoita\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Ei pystynyt käynnistämään TorrentQueueta, katso virheet yltä."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrent-tiedoston luoja %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Tee torrent-tiedosto tälle tiedostolle/kansiolle:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Valitse..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Kansioista tulee erä-torrentteja)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Palojen koko:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Käytä _trakkeria:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Käytä _DHT:ta:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Noodit (valinnainen):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentit:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Luo"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Isäntä"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Portti"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Luodaan torrentteja..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Tarkistetaan tiedostokokoja..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Aloita jakaminen"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "rakentaa "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Valmis."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrentin rakennus valmis."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Virhe!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Virhe rakennettaessa torrentteja: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Vaaditaan GTK:n versio %s tai uudempi"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d päivää"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 päivä %d tuntia"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d tuntia"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuuttia"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekuntia"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekuntia"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ohje"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Usein kysytyt kysymykset:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Mene"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Valitse olemassa oleva kansio..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Kaikki tiedostot"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrentit"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Luo uusi kansio..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Valitse tiedosto"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Valitse kansio"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Ei voitu ladata tallennettua tilaa: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Ei voitu tallentaa käyttöliittymän tilaa: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Epäkelpo tilatiedoston sisältö"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Tiedoston \"%s\" lukemisessa tapahtui virhe."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "ei voi palauttaa tilaa kokonaan"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Epäkelpo tilatieto (kaksinkertainen arvo)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+"Torrent \"%s\" sisältää korruptoitunutta dataa. Palauttaminen ei onnistu."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(tarkistussumma ei täsmää)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Epäkelpo tilatieto (huono arvo)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Huono käyttöliittymän tilatieto"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Huono käyttöliittymän tilatiedon versio"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Käyttöliittymän tilatiedon versiota ei ole tueta (uudemmasta ohjelmaversiosta?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Ei voitu poistaa välimuistista %s tiedostoa:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Tämä ei ole kelpo torrent-tiedosto. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Tämä torrent (tai toinen samansisältöinen) on jo käynnissä."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Tämä torrent (tai toinen samansisältöinen) on jo jonossa."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent tuntemattomassa tilassa %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Ei voi kirjoittaa tiedostoa "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrentia ei käynnistetä uudelleen oikein ohjelman käynnistyksessä"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Ei voi ajaa kerralla useampaa kuin %d torrentia. Lisätietoa usein kysytyistä kysymyksistä: %s"
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrentia ei käynnistetä, sillä muita torrenteja on jonossa ja tämä torrent on jo saavuttanut asetuksissa määrätyt rajat jakamisen lopettamiseksi."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Torrentia ei käynnistetä, sillä se on jo saavuttanut asetuksissa määrätyt rajat viimeisen valmiin torrentin jakamisen lopettamiseksi."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Ei pystynyt saamaan %s viimeisintä versiota"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Ei pystynyt jäsentämään %s uuden version jonoa"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Ei pystynyt löytämään sopivaa väliaikaista paikkaa %s %s asentajan tallentamiseksi."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Torrent-tiedostoa ei ole saatavilla %s %s asentajalle."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"%s %s asennusohjelma on mahdollisesti vajaa, hävinnyt tai korruptoitunut."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Ei pysty käynnistämään asentajaa tässä käyttöjärjestelmässä"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Ei torrentteja"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Aloittaa latausta"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Toimii normaalisti"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Lataukset voivat olla hitaita:\nLuultavasti palomuurilla/NAT:illa suojattu"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Tarkista internet-yhteys"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"hakemisto johon tallennetaan muuttujat kuten nopean jatkamisen tiedot ja käyttöliittymän tilatiedot. Oletuksena 'data' bittorrentin config -kansiossa."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"paikallisessa tiedostojärjestelmässä käytettävä merkkikoodaus. Havaitaan automaattisesti mikäli tyhjä ja mikäli käytössä Python 2.3 tai uudempi."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Käytettävä ISO-kielikoodi"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"trakkerille ilmoitettava ip (ei vaikutusta ellei olla samassa paikallisverkossa trakkerin kanssa)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"maailmalle näkyvän portin numero, mikäli se on eri kuin mitä ohjelma kuuntelee paikallisesti"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "pienin kuunneltava portti, siirrytään suurempaan mikäli ei saatavilla"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "suurin kuunneltava portti"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "paikallisesti yhdistettävä ip"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "näytettävän tiedon päivitysväli sekunneissa"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "odotusaika toisten lataajien pyyntöjen välillä minuuteissa"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "pienin määrä toisia lataajia, jotta uusia ei enää pyydetä"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"toisien lataajien määrä, jonka jälkeen uusien yhteyksien muodostaminen lopetetaan"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "enimmäismäärä lähteviä keskeneräisiä yhteyksiä"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"suurin sallittu yhteyksien määrä, jonka jälkeen kaikki uudet tulevat yhteydet suljetaan"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "takistetaanko tarkistussummia levyllä"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "suurin sallittu lähetysnopeus kB/s, 0 = ei rajaa"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"määrä lähetyksiä, joilla täyttää ylimääräisillä optimistisilla epätukehduksilla"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"suurin määrä samanaikaisesti avoinna olevia tiedostoja monen tiedoston torrentissa, 0 = ei rajaa. Käytetään välttämään tiedoston deskriptaajien loppumista."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Alusta trakkeriton asiakas. Tämä valinta tulee tehdä, jotta voidaan ladata trakkerittomia torrenteja."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "sekuntien määrä keepalive-viestien lähetysten välillä"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "kuinka monta tavua luetellaan pyyntöä kohden."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"suurin sallittu etuliitekoodaus, jonka sallit verkosta - isommat arvot saavat yhteyden kaatumaan."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "sulkemisväli sekunneissa pesille, joista mitään ei ole vastaanotettu"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"tarkistusväli sekunneissa, kun tarkistetaan ovatko yhteydet aikautuneet"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"suurin sallittu toisille lataajille lähetettävän siivun pituus, sulje yhteys jos pyydetään isompaa"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"suurin aikaväli, jonka aikana arvioidaan nykyisiä lähetys- ja latausnopeuksia"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "suurin aikaväli, jonka aikana arvioidaan nykyistä jakosuhdetta"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"suurin sallittu uudelleenyritysväli epäonnistuneille trakkeri-ilmoituksille"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"odotusaika sekunneissa tulevalle datalle ennenkuin oletetaan yhteyden olevan melkein pysyvästi tukehtunut"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"latausten lukumäärä, jolla siirrytään summittaisesta latauksesta harvinaisin ensin -lataukseen"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "verkkopuskureihin kerralla kirjoitettavien tavujen määrä."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"kiellä tulevat yhteydet osoitteista, jotka lähettävät väärää dataa tai joissa on tarkoituksellisesti vihamielisiä toisia lataajia"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "älä yhdistä useisiin toisiin lataajiin, joilla on sama IP-osoite"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"jos erisuuri kuin nolla, aseta TOS-valinta toisten lataajien yhteyksille tähän arvoon"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"salli ohitus BSD libc:in bugille, joka tekee tiedostojen lukemisesta hidasta."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "HTTP proxyn osoite, jota käytetään trakkeriyhteyksille"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "sulje yhteydet, joissa RST, ja vältä TCP TIME_WAIT -tila"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Käytä kierteisiä verkkokirjastoja verkkoyhteyksiä varten. 1 = käytä kierteistä, 0 = älä käytä kierteistä, -1 = automaattinen tunnistus ja mieluummin kierteinen"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"tiedostonimi (yhden tiedoston torrent) tai kansionimi (erä-torrent), jolla tallennetaan ohittaen torrentin oletusnimi. Katso myös --save_in, jos kumpaakaan ei ole määritelty, käyttäjältä pyydetään tallennuspaikka"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "näytä edistynyt käyttöliittymä"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"suurin sallittu aika minuuteissa jakaa valmista torrenttia ennenkuin jako lopetetaan"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"pienin saavutettava lähetys/lataus -suhde prosenteissa ennen jakamisen lopettamista. 0 = ei rajaa."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"pienin saavutettava lähetys/lataus -suhde prosenteissa ennen viimeisen torrentin jakamisen lopettamista. 0 = ei rajaa."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Jaa jokaista valmistunutta torrenttia loputtomiin (kunnes käyttäjä lopettaa sen)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Jaa viimeisintä torrenttia loputtomiin (kunnes käyttäjä lopettaa sen)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "avaa lataaja pysäytetyssä tilassa"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"määrittää, kuinka ohjelman tulee käyttäytyä, kun toinen torrent aloitetaan manuaalisesti: \"korvaa\" tarkoittaa korvaa aina aktiivinen torrent uudella, \"lisää\" tarkoittaa lisää aina aktiivinen torrent rinnalle, ja \"kysy\" tarkoittaa kysy käyttäjältä joka kerta."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Käynnistä BitTorrent pienennettynä"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"syrjäytä http-versiotarkastuksen antama versio ja ota käyttöön versiotarkistus virheenpoistotilassa"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"syrjäytä versiotarkistuksessa käytettävä nykyinen versio ja ota käyttöön versiotarkistus virheenpoistotilassa"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "määritä ikkunan koko ja paikka muodossa:LEVEYSxKORKEUS+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"tiedostonimi (yhden tiedoston torrent) tai kansionimi (erä-torrent), jolla tallennetaan ohittaen torrentin oletusnimen. Katso myös --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"Yhdellä kertaa sallittava lähetysten enimmäsimäärä. -1 tarkoittaa (toivottavasti) kohtuullista määrää, joka perustuu --enimmäislähetysmäärään. Automaattiset arvot ovat järkeviä vain silloin, kun käytetään yhtä torrentia kerrallaan."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"paikallinen kansio, johon torrentin sisältö tallennetaan. Tiedosto (yhden tiedoston torrent) tai kansio (erä-torrent) luodaan tähän kansioon käyttäen torrent-tiedostossa määriteltyä oletusnimeä. Katso myös --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "kysytäänkö ladatuille tiedostoille tallennuspaikkaa"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"paikallinen kansio, johon torrentit tallennetaan käyttäen --saveas_tyylillä määriteltyä nimeä. Jos tämä jätetään tyhjäksi, jokainen torrent tallennetaan samaan kansioon vastaavan .torrent -tiedoston kanssa"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "kuinka usein torrent -kansio tutkitaan, sekunneissa"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"odota näin monta sekuntia torrentin huomaamisen jälkeen ennen kuin aloitat sen välttääksesi kilpailun trakkerin kanssa"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Kuinka torrent-lataukset nimetään: 1: käytä torrent-tiedoston nimeä (ilman .torrent); 2: käytä torrentiin koodattua nimeä; 3: luo kansio torrentin nimellä (ilman .torrent) ja tallenna torrentiin koodatulla nimellä; 4: jos torrentin nimi (ilman .torrent) ja torrentiin koodattu nimi ovat samat, käytä sitä (tyyli 1/2), muutoin luo kansio kuten tyylissä 3; VAROITUS: vaihtoehdoilla 1 ja 2 on kyky kirjoittaa olemassa olevien tiedostojen päälle ilman varoitusta ja voivat täten aiheuttaa turvallisuusriskin."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"näytetäänkö jokaisesta torrentista koko hakemistopolku vai torrentin sisältö"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "hakemisto josta etsitään .torrent-tiedostoja (osittaisrekursiivinen)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "näytetäänkö analyysi-info stdout:lle"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "mihin kahden potenssiin palan koko asetetaan"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "trakkerin oletusnimi"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"jos epätosi, luo trakkeriton torrent ilmoitus-URL:in sijaan, käytä luotettavaa noodia muodossa <ip>:<port> tai tyhjää riviä saadaksesi noodeja reitittimeltä"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "lataus valmis!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<tuntematon>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "lopettaa %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "lataus onnistui"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d nyt näkyvillä, lisäksi %d jaettua kopiota (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d jaettua kopiota (seuraava: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d nyt nähtävillä"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "VIRHE:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "tallentaa:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "tiedostokoko:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "prosenttia valmiina:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "jäljelläoleva aika:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "lataa kansioon:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "latausnopeus: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "lähetysnopeus:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "jakosuhde:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "jakaja -tilanne:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peeri -tilanne:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Et voi määrittää sekä --save_as että --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "sulkeutuu"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Virhe luettaessa määrityksiä: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Virhe luettaessa .torrent -tiedostoa: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "sinun täytyy täsmentää .torrent -tiedosto"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Tekstimuotoisen käyttöliittymän käynnistys epäonnistui, ei voida jatkaa."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Tämä latausliityntä vaatii Pythonmoduulin \"curses\", joka ei valitettavasti ole saatavilla alkuperäiselle Windowsin Python -portille. Se on kuitenkin saatavissa Cygwinin Python -portille, käy kaikkiin Win32 -järjestelmiin (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Voit yhä käyttää \"bittorrent-konsolia\" hakemiseen."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "tiedosto:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "koko:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "kohde:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "edistyminen:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "tila:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "latausnopeus:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "lähetysnopeus:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "jako:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "jakajia:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peerejä:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d nyt nähtävillä, sekä %d jaettua kopiota (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "virhe(et):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "virhe:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr " # IP Lähetys Lataus Valmiina Nopeus"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "lataa %d palaa, %d osittaisia, %d :sta palasta %d valmiina"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Nämä virheet tapahtuivat suorituksen aikana:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Käyttö: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ]]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "vanha ilmoitus %s:%s :lle"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "ei torrentteja"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEEMIVIRHE - POIKKEUS TEHTY"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Varoitus: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " ei ole kansio"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "virhe: %s\n aja ilman argumentteja parametriselityksille"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\n POIKKEUS:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Voit yhä käyttää lataamiseen \"btdownloadheadless.py\"."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "yhdistyy peereihin"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "arvioitu saapumisaika %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Koko"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Lähetä"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Yhteensä:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "virhe: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\n aja ilman argumentteja parametriselityksille"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+"valinnainen .torrent -tiedostoon laitettava luettavissa oleva kommentti"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "valinnainen torrentin kohdetiedosto"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s%s - tulkitse %s metainfo -tiedostot"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Käyttö: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo -tiedosto: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "tarkistussumma: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "tiedostonimi: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "tiedoston koko:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "tiedostot:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "kansion nimi: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "arkiston koko:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "trakkerin ilmoitus-url: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "trakkerittomat noodit:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "kommentti:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Ma"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Ti"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Ke"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "To"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Pe"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "La"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Su"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Tammi"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Helmi"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Maalis"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Huhti"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Touko"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Kesä"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Heinä"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Elo"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Syys"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Loka"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Marras"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Joulu"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Pakattu: %i Pakkaamaton: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Ei pystytty pysyvästi tallentamaan asetuksia:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Virhe luettaessa konfiguraatiotiedostoa. Vanha konfiguraatotiedosto on tallennettu paikkaan \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Lopeta %s ja uudelleen asenna se. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Ei löytynyt käännöstä kielelle \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Tiedosto %s kuuluu toiseen käynnissä olevaan torrenttiin"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Tiedosto %s on jo olemassa, mutta se ei ole tavallinen tiedosto"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Toinen ohjelma näyttää siirtäneen, uudelleen nimennyt tai poistanut tiedoston, tai %s on kaatunut viime ajon aikana."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Toinen ohjelma näyttää muuttaneen tiedostoa tai %s on kaatunut viime ajon aikana."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Toinen ohjelma näyttää muuttaneen tiedoston kokoa tai %s on kaatunut ajon aikana."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "yhteys hylätty"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Huonoa dataa vastaustiedostossa - summa liian pieni"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "Huonoa dataa vastaustiedostossa - summa liian suuri"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "Tarkistetaan olemassa olevaa tiedostoa"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "lisätty \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "lataa"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+".Torrent tiedoston nimeä ei voi yksilöidä kun luodaan monia torrentteja yhdellä kertaa"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Tiedosto-/kansionimi \"%s\" sisältää varattuja unicode arvoja, jotka eivät vastaa merkkejä."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Ei pystytty lukemaan kansiota"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**varoitus** %s on kaksoistorrentti %s varten"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**varoitus** %s :ssa on ongelmia"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... onnistui"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "poistetaan %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "tarkastus tehty"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Ei voi lukea %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Ei voi ladata tai avata \n %s\n Koita ladata torrent -tiedosto selaimella."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nimeä %s ei sallittu turvallisuus syistä"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "virheellinen peer-lista"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "virheellinen trakkeri id"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "virheellinen peer-määrä"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "virheellinen seed-määrä"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Käyttö: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[ASETUKSET] [TORRENTKANSIO]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[ASETUKSET] [TORRENT-TIEDOSTOT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[ASETUKSET] [TORRENT-TIEDOSTO]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "tuntematon avain"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Asetus %s tarvitaan."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "väärä muoto %s - %s :sta"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"aika, joka odotetaan yhteyksien aikakatkaisun varalta tehtävän tarkastuksen välillä"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "URL johon infosivu uudelleenohjataan"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Kahta erillistä tapausta ei voi aloittaa samasta torrentista"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Ensisijainen käynnistys"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Suoritan täyden hash tarkastuksen."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "lataus epäonnistui"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Virhe : Ei tilaa levykkeellä, tai vaihtoehtoisesti ei voi luoda niin suurta tiedostoa"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "Tapettu OS Virheen Johdosta."
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "tapettu sisäisen poikkeuksen toimesta"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Toinen virhe yrittäessä sulkea virheen takia."
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Ei voinut poistaa pika-jatkettavaa tiedostoa virheen jälkeen."
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "Sammuta"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Tämä näyttäisi olevan Pythonin vanha versio, joka ei tue tiedostojärjestelmän koodauksen tunnistamista. Oletetaan 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python ei onnistunut tunnistamaan automaattisesti tiedostojärjestelmän koodausta. Käytetään 'ascii' sen sijaan."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Tiedostojärjestelmän koodaus '%s' ei ole tuettu. Käytetään 'ascii' sen sijaan."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Epäkelpo tiedostopolun osa: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tämä .torrent -tiedosto on luotu käyttäen rikkinäistä työkalua ja siinä on virheellisesti koodattuja tiedostonimiä. Jotkin tai kaikki tiedostonimet voivat näyttää erilaiselta kuin mitä .torrent -tiedoston tekijä on tarkoittanut."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tämä .torrent -tiedosto on luotu käyttäen rikkinäistä työkalua ja siinä on huonoja merkkiarvoja jotka eivät vastaa mitään olemassaolevaa merkkiä. Jotkin tai kaikki tiedostonimet voivat näyttää erilaiselta kuin mitä .torrent -tiedoston tekijä on tarkoittanut."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Tämä .torrent -tiedosto on luotu käyttäen rikkinäistä työkalua ja siinä on väärin koodattuja tiedostonimiä. Käytetyn nimet voivat silti olla oikein."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Paikallisessa tiedostojärjestelmässä (\"%s\") käytetty merkkisarja ei voi näyttää kaikkia torrentissa käytettyjä tiedostonimiä. Tiedostonimet on muutettu alkuperäisestä."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Tämä .torrent -tiedosto on luotu käyttäen rikkinäistä työkalua, ja siinä on ainakin 1 tiedosto jolla on epäkelpo tiedosto- tai kansionimi. Koska kaikkien sellaisten tiedostojen pituudeksi on merkitty 0, ne jätetään huomioimatta."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Ei pystytty lähettämään käskyä:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..d3832b0
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,2874 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 13:05-0600\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: French <bugs@bittorrent.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installer Python %s ou plus récent"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "obsolète, ne pas utiliser"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Échec de la communication avec un autre processus %s mais semble tout de même fonctionner."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Fermer toutes les fenêtres %s pourrait résoudre le problème."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s est déjà en cours d'exécution"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Échec de communication avec un autre processus %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s ou plus récent est requis"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "faire glisser pour réordonner"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Clic droit pour le menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Modem RTC"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Câble 128kbps et plus"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Câble 256kbps et plus"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768kbps et plus"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Entrez l'URL du torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Entrez l'URL d'un fichier torrent à ouvrir :"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Taux de transfert maximum :"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Interrompre momentanément tous les torrents"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Reprendre le téléchargement"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nouvelle version %s disponible"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Une nouvelle version de %s est disponible.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Vous utilisez %s, et la nouvelle version est %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Vous pouvez toujours obtenir la dernière version depuis \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Télécharger _plus tard"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Télécharger _maintenant"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Me le rappeler ultérieurement"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "À propos de %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Bêta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Ouverture de %s impossible"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Faites un don"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Journal d'activité de %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Enregistrer le journal sous :"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "journal enregistré"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "journal effacé"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Réglages de %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Général"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Lancer BitTorrent au démarrage de Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Réduire dans la zone de notification"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr ""
+"Toujours afficher le texte de la barre de progression en noir \n (nécessite un redémarrage)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Sauvegarde en cours"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Sauvegarder les nouveaux téléchargements dans:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Changer..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Demander où sauvegarder chaque nouveau téléchargement"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Téléchargement en cours"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Au démarrage d'un nouveau torrent :"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Stopper un autre torrent en cours pour faire de la place"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Ne pas stopper d'autres torrents en cours"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Demander la prochaine fois"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Essaimage"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Essaimer les torrents finalisés : jusqu'à ce que le taux de partage atteigne [_] pourcent, ou pendant [_] minutes, dans l'ordre de disponibilité."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Essaimer indéfiniment"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Essaimer le dernier torrent finalisé : jusqu'à ce que le taux de partage atteigne [_] pourcent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Réseau"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Rechercher un port disponible :"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Démarrer au port :"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Activer le mappage de port automatique"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP à rapporter au tracker :"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(N'a aucun effet si vous n'êtes pas sur le même réseau local que le tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"AVERTISSEMENT : La modification de ces réglages peut\n empêcher %s de fonctionner correctement."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Option"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valeur"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avancé"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Sélectionner le répertoire de téléchargement par défaut"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Échec de retrait du raccourci : %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Fichiers dans \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Jamais"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Ne jamais télécharger"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Télécharger normalement"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Premier"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Télécharger en premier"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nom du fichier"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Longueur"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Télécharger"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "jamais"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "premier"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Pairs pour \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Adresse IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Connexion"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "Ko/s de téléchargement entrant"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "Ko/s de téléchargement sortant"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "Mo téléchargés en amont"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "Mo entrant téléchargés"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% terminé"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "Téléchargement pair estimé en Ko/s"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID pair"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Intéressé"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Bloqué"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Rejeté"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Téléchargement entrant optimiste"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "distant"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "mauvais pair"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d OK"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d mauvais"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "banni"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "OK"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informations sur \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nom du torrent :"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sans tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL annoncée :"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en un fichier"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", en %d fichiers"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Taille totale :"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Parties :"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hachage :"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Enregistrer sous :"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nom du fichier :"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Ouvrir répertoire"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Afficher la liste de fichiers_"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informations du torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Supprimer le torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Annuler le torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", essaimera jusqu'à %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", essaimera indéfiniment."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Terminé, taux de partage : %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Terminé, %s envoyés."
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Terminé"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informations du torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Liste des _fichiers"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Liste des _pairs"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Modifier l'emplacement"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Essaimer indéfiniment"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_démarrer"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Terminer"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Supprimer"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Annuler"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Êtes-vous sûr de vouloir supprimer \"%s\" ?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Votre taux de partage pour ce torrent est %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Vous avez envoyé %s de ce torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Supprimer ce torrent ?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Terminé"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "déplacer dans la liste pour essaimer"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Échec"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "déplacer dans la liste pour reprendre"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "En attente"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "En pause"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "En cours"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Téléchargement sortant actuel : %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Téléchargement entrant actuel : %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Téléchargement sortant précédent : %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Téléchargement entrant précédent : %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Taux de partage : %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s pairs, %s semeurs. Totaux depuis le tracker : %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copies distribuées : %d ; Suivant : %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Parties : %d entiers, %d complets, %d partiels, %d actifs (%d vides)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d mauvaises parties +%s dans des requêtes rejetées"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% effectués, %s restants"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Taux de transfert entrant"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Taux de transfert sortant"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s démarrés"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Quitter"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "S_ortir"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Ouvrir fichier torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Ouvrir l'_URL du torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Créer un _nouveau torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pause/Téléchargement"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Afficher/Masquer les torrents _terminés"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Ajuster la taille de la fenêtre"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Journal"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Paramètres"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Aide"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_À propos"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Faire un don"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fichier"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Affichage"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Rechercher des torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(arrêté)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(multiple)"
+
+#: bittorrent.py:3155
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Le téléchargement de l'installeur %s est déjà en cours"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installer le nouveau %s maintenant ?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"Voulez vous quitter %s et installer la nouvelle version, %s, maintenant ?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "L'aide %s\nest à %s\nVoulez-vous vous y rendre ?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Visiter la page Internet d'aide ?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Il y a un torrent terminé dans la liste."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Voulez-vous le retirer ?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Il y a %d torrents terminés dans la liste."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Souhaitez-vous tous les retirer ?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Retirer tous les torrents terminés ?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Aucun torrent terminé."
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Il n'y a aucun torrent terminé à retirer."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Ouvrir un torrent :"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Changer l'emplacement de sauvegarde pour"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Ce fichier existe déjà !"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" existe déjà. Voulez-vous choisir un nom de fichier différent ?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Enregistrer l'emplacement pour"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Ce dossier existe déjà !"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" existe déja. Voulez-vous créer un dossier dupliqué, identique dans le dossier existant ?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(message global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Erreur %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"De multiples erreurs sont apparues. Cliquez sur OK pour voir le journal des erreurs."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Arrêter le torrent en cours ?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Vous allez démarrer \"%s\". Voulez-vous également stopper un autre torrent ?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Avez-vous fait un don ?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bienvenue dans cette nouvelle version de %s. Avez-vous fait un don ?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Merci !"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Merci pour votre don ! Pour donner à nouveau, sélectionnez \"Faire un don\" depuis le menu \"Aide\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+"Démarrage de la file d'attente TorrentQueue impossible, voir ci-dessus pour les erreurs. "
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s créateur de fichier torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Créer un fichier torrent pour ce fichier/répertoire :"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Choisir..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Les répertoires deviendront des lots de torrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Taille de partie :"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Utiliser un _tracker :"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Utiliser un _DHT :"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nœuds (optionnel) :"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Commentaires :"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Produire"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Hôte"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Création du torrent..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Vérification des tailles des fichiers..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Lancer l'essaimage"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "Génération de "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Terminé."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Génération du torrent terminée."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Erreur !"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Erreur de génération des torrents :"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s ou plus récent requis"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d jours"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 jour %d heures"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d heures"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutes"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d secondes"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 seconde"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Aide %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Foire aux questions"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Aller"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Choisir un répertoire existant..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Créer un nouveau répertoire..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Sélectionner un fichier"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Sélectionner un dossier"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Échec lors du chargement de l'état sauvegardé :"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Sauvegarde de l'état de l'UI impossible :"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Contenu du fichier d'état invalide"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Erreur pendant la lecture du fichier \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "Restauration complète de l'état impossible"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Fichier d'état invalide (entrée double)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Données corrompues dans \"%s\", impossible de restaurer le torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(informations de hashage non concordantes)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Fichier d'état invalide (mauvaise entrée)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Mauvais fichier d'état de l'UI"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Mauvaise version du fichier d'état de l'UI"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Version du fichier d'état de l'UI non supportée (provient d'une nouvelle version du client ?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Ne peut pas supprimer le fichier caché %s :"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Ceci n'est pas un fichier torrent valide. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Ce torrent (ou un avec un contenu identique) est déjà en cours."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Ce torrent (ou un avec un contenu identique) est déjà en attente."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent dans un état inconnu %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Écriture du fichier impossible "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "le torrent ne sera pas relancé correctement au redémarrage du client"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Impossible de gérer simultanément plus de %d torrents. Pour plus d'infos, lire la FAQ à %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Le torrent ne démarre pas à cause d'autres torrents en attente, et correspond déjà aux critères d'arrêt de l'essaimage."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Le torrent ne démarre pas car il correspond déjà aux critères d'arrêt d'essaimage du dernier torrent complété."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Impossible d'obtenir la dernière version depuis %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Impossible d'analyser la chaîne de la nouvelle version depuis %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Impossible de trouver un emplacement temporaire approprié pour sauvegarder l'installeur %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Aucun fichier torrent disponible pour l'installeur %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "L'installeur %s %s parait incomplet, manquant ou corrompu."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Impossible de lancer un installeur sur ce système d'exploitation"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Aucun torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Démarrage du téléchargement"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Fonctionnement normal"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Le téléchargement peut être lent :\nProbablement derrière un pare-feu/NATé"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Vérifier la connexion au réseau"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"le repertoire contenant les données variables telles que les informations de redémarrage rapide et l'état de l'UI a été sauvegardé. Il s'agit par défaut du sous-répertoire 'data' du répertoire de configuration de BitTorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"encodage des caractères utilisé par le système de fichier local. Laissé vide, il sera autodétecté. L'auto-détection ne fonctionne pas avec les versions python inférieures à 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Code ISO de la langue à utiliser"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP à transmettre au tracker (n'a aucun effet si vous n'êtes pas sur le même réseau local que le tracker)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"numéro du port visible universellement s'il est différent de celui sur lequel le client écoute localement"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "port inférieur d'écoute, incrémenté si indisponible"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "port supérieur d'écoute sur"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP à relier localement"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+"intervalle en secondes entre chaque mise à jour des informations affichées"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+"intervalle en minutes entre chaque requête de recherche de plus de pairs"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "nombre minimum de pairs pour éviter une nouvelle requête"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "nombre de pairs auquel limiter l'initiation de nouvelles connexions"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "nombre maximum de connexions sortantes incomplètes"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"nombre maximum de connexions autorisées ; au delà, les nouvelles connexions entrantes seront immédiatement fermées."
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "condition de vérification des hachages sur le disque"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "Ko/s maximum pour le téléchargement ; 0 signifie sans limite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"le nombre de téléchargements à desservir avec dépiégeages extra optimistes"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"le nombre maximum de fichiers dans un torrent multi-fichiers à conserver ouverts simultanément, 0 signifiant sans limite. Utilisé pour éviter de manquer de descripteurs de fichiers."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Initialise un client sans tracker. Ceci doit être activé pour télécharger depuis des torrents sans tracker."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"intervalle en secondes entre les envois de message de maintien de connexion"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "nombre d'octets à demander par requête."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"longueur maximale d'encodage du préfixe autorisée via le réseau - des valeurs plus grandes rompront la connexion"
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"intervalle en secondes avant la fermeture des accès sur lesquels rien n'a été reçu"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "intervalle en secondes de vérification de l'expiration des connexions"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"tranche de longueur maximale à envoyer aux pairs, clôt la connexion si une requête plus importante est reçue"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"intervalle maximal de temps permettant l'estimation des taux de transfert entrant et sortant"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"intervalle maximal de temps permettant l'estimation du taux d'essaimage courant"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "intervalle maximal pour réessayer une annonce échouée"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"secondes d'attente de réception de données sur une connexion avant de la définir comme bloquée de façon semi-permanente"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"nombre de téléchargements à partir duquel basculer aléatoirement vers un autre aux sources les plus rares en priorité"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "nombre d'octets à écrire simultanément dans les tampons réseau."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"refuser les connexions rompues ou intentionnellement hostiles, issues d'adresses de pairs envoyant des données incorrectes"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "ne pas se connecter à plusieurs pairs ayant la même adresse IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"si non nulle, régle l'option TOS pour les connexions aux pairs à cette valeur"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"active une solution de contournement pour une erreur existant dans la bibliothèque BSD libc rendant la lecture des fichiers très lente."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adresse du proxy HTTP à employer pour les connexions au tracker"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "fermer les connexions avec RST et éviter l'état TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Utiliser les bibliothèques réseaux Twisted pour les connexions réseau. 1: utiliser Twisted, 0 : ne pas l'utiliser Twisted, -1: Autodétection avec préférence pour Twistedpréfère Twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nom de fichier (pour torrent simple) ou nom du répertoire (pour torrent multiple) sous lequel enregistrer le torrent, outrepassant le nom par défaut du torrent. Voir aussi --save_in. Si aucun n'est spécifié, l'utilisateur se verra demandé l'emplacement de la sauvegarde"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "afficher l'interface utilisateur avancée"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"Temps en minutes pendant lequel un torrent sera essaimé après avoir été terminé"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"le taux minimal de téléchargement entrant/sortant, en pourcentage, à atteindre avant d'interrompre l'essaimage. 0 signifie sans limite."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"le taux minimal de téléchargement entrant/sortant, en pourcentage, à atteindre avant d'interrompre l'essaimage du dernier torrent. 0 signifie sans limite."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Essaimer chaque torrent terminé indéfiniment (jusqu'à annulation par l'utilisateur)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Essaimer le dernier torrent indéfiniment (jusqu'à annulation par l'utilisateur)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "démarrer le téléchargeur en pause"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"spécifie le comportement de l'application lorsque l'utilisateur cherche manuellement à démarrer un autre torrent : \"remplacer\" signifie toujours remplacer le torrent par le nouveau, \"ajouter\" signifie ajouter le torrent en cours en parallèle, et \"demander\" signifie demander à l'utilisateur à chaque fois."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Démarrer BitTorrent minimisé"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"annuler la version fournie par la vérification de version http et activer le mode de débuggage de vérification de version"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"annuler la version en cours utilisée dans la vérification de version et activer le mode de débuggage de vérification de version"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"spécifier la taille et la position de la fenêtre en respectant ce format : Largeur+Hauteur+PositionX+PositionY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nom de fichier (pour torrent simple) ou nom de répertoire (pour torrents multiples) sous lequel enregistrer le torrent, outrepassant le nom par défaut du torrent. Voir aussi --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"le nombre maximum de téléchargements à autoriser simultanément. -1 signifie un nombre raisonnable calculé à partir du --max_upload_rate. Les valeurs automatiques ne s'appliquent que lorsqu'un seul torrent à la fois est lancé."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"répertoire local dans lequel le torrent sera sauvegardé. Le fichier (torrent simple) ou répertoire (torrent multiple) sera créé sous ce répertoire utilisant le nom par défaut spécifié dans le fichier .torrent. Voir aussi --save_as"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "demander ou non l'emplacement pour enregistrer les fichiers"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"répertoire local dans lequel les torrents seront enregistrés, utilisant un nom déterminé par --saveas_style. S'il est vide, chaque torrent sera sauvegardé dans le répertoire correspondant au fichier .torrent."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+"intervalle de temps entre chaque revérification du contenu du répertoire en secondes"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"attendre x secondes après observation d'un torrent pour le lancer afin déviter un emballement du tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Comment nommer les torrents téléchargés: 1: utiliser le nom DU fichier torrent (sans le .torrent); 2: utiliser le nom encodé DANS le fichier torrent; 3: créer un répertoire du nom DU fichier torrent (sans le .torrent) et enregistrer dans ce repertoire en utilisant le nom encodé DANS le fichier torrent; 4: si le nom DU fichier torrent (moins .torrent) est identique au nom encodé DANS le fichier, utiliser ce nom (style 1/2), ou créer un répertoire intermédiaire similaire à l'option 3; ATTENTION : les options 1 et 2 sont à même d'écraser des fichiers sans avertissement et peuvent présenter des problèmes de sécurité."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"choix d'affichage du chemin complet ou du contenu du torrent pour chaque torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "répertoire où rechercher des fichiers .torrents (semi-récursif)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "choix d'affichage des infos de diagnostic vers stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "choix de deux moyens pour régler la taille de la partie à"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nom du tracker par défaut"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"si faux, créer un torrent sans tracker, au lieu d'une URL d'annonce, utilisez un noeud faible de la forme <ip>:<port> ou une chaine vide pour tirer des noeuds de votre table de routage"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "téléchargement terminé!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<inconnu>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "Terminé dans %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "téléchargements réussis"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f Mo envoyés / %.1f Mo téléchargés)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f Mo envoyés / %.1f Mo téléchargés)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d vus actuellement, plus %d copies distribuées (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d de copies distribuées (suivant : %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d vus actuellement"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERREUR :\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "sauvegarde de :"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "taille du fichier :"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "pourcentage effectué :"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "temps restant :"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "télécharger vers :"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "taux de transfert entrant:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "taux de transfert sortant:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "taux de partage:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "statut d'essaimage :"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "statut des pairs :"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Vous ne pouvez spécifier à la fois --save_as et --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "en cours d'arrêt"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Erreur de lecture de configuration :"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Erreur de lecture du fichier .torrent :"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "vous devez spécifier un fichier .torrent "
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"L'initialisation du mode texte GUI a échoué, le processus ne peut pas s'exécuter."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Cette interface de téléchargement nécessite le module Python standard \"curses\", lequel n'est malheureusement pas disponible pour le portage Windows natif de Python. Il est toutefois disponible pour le portage Cygwin, tournant sur tous les systèmes win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Vous devriez utiliser \"bittorrent-console\" pour télécharger."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fichier :"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "taille :"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "destination : "
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progression :"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "statut :"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "Vit. de téléchargement entrant :"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "Vit. de téléchargement sortant :"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "partage :"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "semeurs :"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "pairs :"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d vus actuellement, plus %d de copies distribuées(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "erreur(s) :"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "erreur:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Envoi Réception Terminé Vitesse"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"télécharge %d morceaux, a %d fragments, %d morceaux sur %d sont complètes"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Ces erreurs sont intervenues au cours de l'exécution:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Utilisation: %s URL_TRACKER [FICHIERTORRENT [FICHIERTORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "vieille annonce pour %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "pas de torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERREUR SYSTÈME - EXCEPTION GÉNÉRÉE"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Attention:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "n'est pas un répertoire"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "erreur: %s\ns'exécute sans arguments pour le detail des paramètres"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPTION:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Vous pouvez encore utiliser \"btdownloadheadless.py\" pour télécharger."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "connexion aux pairs"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA dans %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Taille"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Envoyer"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totaux:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s pairs %s semeurs %s copies distribuées - %s sortant %s entrant"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "erreur:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\ns'exécute sans arguments pour le detail des paramètres"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "commentaire intelligible optionnel à mettre dans le .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "fichier cible optionnel pour le torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - décode %s fichiers métainfos"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Usage: %s [FICHIERTORRENT [FICHIERTORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "fichier métainfos: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info de hachage: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nom de fichier: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "taille du fichier:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "fichiers:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nom du répertoire: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "taille de l'archive: "
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url d'annonce du tracker: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "noeuds sans tracker"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "commentaires:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Lun"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mer"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Jeu"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Ven"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sam"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dim"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Fév"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Avr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aoû"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Oct"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Déc"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Compressé : %i Non-compressé : %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Sauvegarde permanente des options impossible :"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Erreur à la lecture du fichier de configuration. L'ancienne configuration a été stockée dans \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "L'option de configuration ne convient pas. '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Il faut quitter et réinstaller %s. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Pas de traduction pour la langue \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Le fichier %s appartient à un autre torrent en cours"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Le fichier %s existe déjà, mais ce n'est pas un fichier régulier"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lecture courte - fichier tronqué ?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Format de fichier de reprise rapide non-supporté, peut-être d'une autre version du client ?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un autre programme semble avoir déplacé, renommé ou supprimé le fichier, ou bien %s pourrait s'être planté lors de sa dernière exécution."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un autre programme semble avoir modifié le fichier, ou bien %s pourrait s'être planté lors de sa dernière exécution."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Un autre programme semble avoir modifié la taille du fichier, ou bien %s pourrait s'être planté lors de sa dernière exécution."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Lecture impossible des données de reprise rapide :"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "Connexion refusée"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Vous avez demandé la réutilisation pour ne pas être en ligne quand lié. Désolé, je ne puis pas faire cela."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"listen_forever() ne devrait être appelée qu'une seule fois par réacteur."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() ne retourne rien tant qu'il n'y a pas d'activité, et ne peut pas traiter l'événement que vous souhaitez. Employez listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "mauvaises données dans le fichier-réponse - total trop petit"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "mauvaises données dans le fichier-réponse - total trop grand"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "vérification des fichiers existants"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 ou les infos de reprise rapide ne correspondent pas à l'état du fichier (données manquantes)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"mauvaises info de la reprise rapide (le fichier contient plus de données)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Mauvaise info de reprise rapide (valeur illégale)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"données endommagées sur le disque - peut-être avez-vous deux copies tournant simultanément ?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"fichier dit complet au démarrage, mais échec de la vérification du hash"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "N'a pas pu régler le traiteur de signal"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "annulé \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "ajouté \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "en attente de la vérification du hachage"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "En téléchargement"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Relecture du fichier de configuration"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Vous ne pouvez spécifier le nom d'un fichier .torrent lorsque vous générez un fichier torrent multiple"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"L'encodage des fichiers système \"%s\" n'est pas supporté par cette version"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Conversion impossible du fichier/répertoire \"%s\" en utf-8 (%s). Soit l'encodage \"%s\" du système de fichier est faux, soit le nom du fichier contient des octets illégaux."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Le nom \"%s\" du fichier/répertoire contient des données unicode réservées qui ne correspondent pas aux caractères."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Lecture impossible du répertoire"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Pas de statistiques"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "retire %s (rajoutera)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**attention** %s est une copie du torrent pour %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**attention** %s contient des erreurs"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... avec succès"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "en cours de retrait %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "vérification effectuée"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "N'a pas pu lire %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"N'a pas pu télécharger ou ouvrir \n %s\nEssayez d'enregister le fichier torrent cible sur le disque dur."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Nécessite Python %s ou plus récent"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Trop tard pour basculer de serveur Raw, %s a déjà été utilisé."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "L'annonce du tracker reste incomplète %d secondes après son départ "
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problème lors de la connexion au tracker, erreur gethostbyname -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problème de connexion au tracker -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "mauvaises données du tracker -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rejeté par le tracker -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Interruption du torrent, rejeté par le tracker alors qu'il n'était connecté à aucun pairs."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Message du tracker:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "avertissement du tracker -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Échec de la recherche sans Tracker :"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "mauvaise méta-infos - pas un dictionnaire"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "mauvaise méta-infos - mauvaise clé de partie"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "mauvaise méta-infos - longueur de partie illégale"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "mauvaise méta-infos - nom incorrecte"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nom %s refusé pour raison de sécurité"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "mélange de fichier simple/multiple"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "mauvaise méta-info - mauvaise longueur"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "mauvaise méta-info - \"fichiers\" n'est pas une liste de fichiers"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo invalide - l'entrée du fichier doit être un dict"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "mauvaise méta-info - mauvais chemin"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "mauvaise méta-info - mauvais chemin de répertoire"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "chemin %s refusé pour raison de sécurité"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "mauvaise méta-info - chemin dupliqué"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "mauvaise méta-info - nom utilisé dans deux fichiers et sous-répertoire"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "mauvaise méta-info - type d'objet incorrect"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "mauvaise méta-info - aucune chaine d'annonce URL"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo invalide - le nœud n'est pas une liste"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+"mauvaise méta-info - la liste de noeuds doit avoir seulement deux éléments"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "méta-info invalide - le nœud doit être une chaîne"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "Mauvaise Metainfo - le port du noeud doit être un nombre entier"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "une chaine doit être la cause de l'échec"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "le message d'erreur doit être une chaîne de caractères"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"Entrée invalide dans la liste des pairs - L'information de pair doit être un dict"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"Entrée invalide dans la liste des pairs - L'IP du pair doit être une chaîne"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"Entrée invalide dans la liste des pairs - Le port du pair doit être un entier"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "Entrée invalide dans la liste des pairs - Id du pair invalide"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "Liste de pairs invalide"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "intervalle d'annonce incorrect"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "intervalle minimum d'annonce incorrect"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id de tracker incorrecte"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "compte de pairs incorrect"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "compte de semeurs incorrect"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"dernière\" entrée incorrecte"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Usage: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIONS] [RÉPERTOIRETORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Si un argument autre qu'option est présent, il sera pris comme la valeur\nde l'option torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIONS] [FICHIERTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIONS] [FICHIERTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTION] FICHIER URL_TRACKER [FICHIER]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "les arguments sont -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(par défaut est "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "clé inconnue"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "le paramètre est arrivé à la fin sans aucune valeur"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "l'analyse de la ligne de commande a échouée à"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "L'option %s est requise."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Vous devez au mimimum fournir %d arguments."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Arguments trop nombreux - le maximum est %d."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "mauvais format de %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port d'écoute"
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fichier dans lequel stocker les infos du téléchargeur"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "délai de fermeture de connexions"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "secondes entre sauvegarde de dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "secondes entre l'expiration des téléchargeurs"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "le second téléchargeur devraient attendre entre les re-annonces"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"valeur par défaut de pairs où envoyer un message d'information au cas où le client n'ai pas spécifié de valeur"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "délai d'attente entre deux vérifications de fermeture des connections"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"fréquence de vérification si le téléchargeur est derrière un NAT (0=pas de vérification)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "Choix d'ajout des entrées du journal pour vérif des résultats du NAT"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"un temps minimum est nécessaire depuis le dernier flush pour en faire un autre"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr "durée minimum avant qu'un tampon soit considéré périmé et soit nettoyé"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"Autoriser seulement les téléchargements de .torrents dans ce répertoire (et, récursivement, dans les sous-répertoires des répertoires qui n'ont pas de fichiers .torrent eux-mêmes). Si autorisé, les torrents de ce répertoire seront affichés dans la page info/scrape, qu'ils aient des pairs ou non."
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"autoriser les touches spéciales dans le allowed_dir pour avoir un accès au tracker"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "Choix de réouverture du fichier journal à la réception d'un signal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"choix de l'afichage d'une page d'info lorsque le répertoire racine du tracker est chargé"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "une URL vers laquelle rediriger la page info"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "choix d'affichage des noms des répertoires autorisés"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"fichier contenant des données x-icon à renvoyer lorsque le navigateur requiert favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"Ignorer le paramètre IP GET des machines qui ne sont pas sur l'IP du réseau local (0=jamais, 1=toujours, 2=ignorer si la vérification NAT est indisponible). Les en-têtes proxy HTTP donnant l'adresse originale du client sont traitées à l'identique que les --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"Fichier utilisé pour écrire le journal des trackers, utile pour stdout (défaut)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"utilisé avec allowed_dir; ajoute une URL /file?hash={hash} qui permet aux utilisateurs de télécharger le fichier torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"conserver les torrents morts après leur expiration (ils resteront donc affichés dans le /scrape et pages web). Seulement si allowed_dir n'est pas réglé."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "accès scrape autorisé(s) (peut être none, specific ou full)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maximum de pairs pour une requête"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"votre fichier existe peut-être aillleurs dans l'univers\n, mais hélas, pas ici\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**attention** fichier favicon spécifié--%s-- n'existe pas."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**attention** état du fichier %s endommagé; remise à zéro"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Journal Démarré : "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**attention redirection stdout vers fichier journal impossible"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Journal réouvert :"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**attention** réouverture du fichier-journal impossible"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "la fonction scrape spécifique n'est pas disponible avec ce tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "la fonction scrape full n'est pas disponible avec ce tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "la fonction get n'est pas disponible avec ce tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"L'utilisation de requêtes de téléchargement n'est pas autorisé avec ce tracker"
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "ne nécessite aucun argument comme paramètres d'explication"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Extinction"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Ne peut démarrer deux occurences séparées d'un même torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Cacher %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Montrer %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "chaine b encodée invalide "
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "valeur b encodée invalide (donnée à la suite du préfixe valide)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "port maxi inférieur au port mini - aucun port à vérifier"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Impossible d'ouvrir un port d'écoute : %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Impossible d'ouvrir un port d'écoute : %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Vérifiez votre plage de réglage."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Démarrage inital"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Ne peut pas charger les données de reprise rapide: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Va effectuer une vérifiaction complète du hachage."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "vérification du hachage de la pièce %d a échouée, rechargez-la"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Tentative de téléchargement d'un torrent sans tracker avec un client dont la fonctionnalité est désactivée."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "Échec du téléchargement :"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Erreur E/S : Plus assez d'espace disque, ou ne peut créer un fichier aussi grand :"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "tué par une erreur d'E/S"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "tué par une erreur d'OS"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "tué par une exception interne :"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Erreur additionnelle à la fermeture à cause d'une erreur :"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Impossible d'ôter le fichier de reprise rapide suite à une erreur :"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "essaimage"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Écriture impossible de données de reprise rapide :"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "extinction"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Ceci est une vieille version de Python laquelle ne supporte pas la détection de l'encodage du système de fichier. C'est à dire 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python a échoué à détecter l'encodage du système de fichier. Utilise 'ASCII' à la place."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"L'encodage du système de fichier '%s' n'est pas supporté. Utilisera 'ASCII' à la place."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Mauvais composant du chemin du fichier :"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ce .torrent a été encodé avec un outil défectueux et a encodé les noms des fichiers incorrectement. Certains ou tous les noms de fichiers peuvent apparaître incorrectement."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ce .torrent a été créé avec un outil défectueux et possède des valeurs de caractères qui ne correspondent pas aux vrais caractères. Certains ou tous les noms de fichiers peuvent apparaître incorrectement."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Ce .torrent a été créé avec un outil défectueux et a encodé les noms des fichiers incorrectement. Les noms de fichiers peuvent cependant être corrects."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Le jeu de caractère utilisé dans le système de fichier local (\"%s\") ne peut représenter tous les caractères utilisés dans les noms de fichiers de ce torrent. Les noms de fichiers ont été modifié par rapport à l'original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Le système de fichiers de Windows ne peut pas manipuler certains caractères utilisés dans le nom de(s) fichier(s) de ce torrent. Des noms de fichiers ont été modifié par rapport à l'original."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Ce fichier .torrent a été créé avec un outil défectueux et au moins un fichier ou un répertoire a un nom incorrect. Toutefois, vu que ces fichiers sont désignés par une longueur de 0, ils seront juste ignorés."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Commande non référencée : %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Création impossible du socket de contrôle: déjà en cours d'utilisation"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Impossible d'enlever le nom de fichier de l'ancien socket de contrôle:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Création du socket de contrôle impossible:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Envoi impossible de la commande:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex global déjà créé"
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Impossible de trouver un port ouvert!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Ne peut pas créer le répertoire de données de l'application!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"N'a pas pu obtenir le verrouillage du mutex global pour le fichier de contrôle des ports!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Une précédente instance de BT n'a pas été terminée correctement. Reprise."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Une autre instance de BT est lancée, mais \"%s\" n'existe pas.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Je devinerai au port."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port trouvé: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Pas de port trouvé."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Statut IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Conversation DDE connectée."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "Echec d'enregistrement ou de fermeture du socket serveur: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket serveur perdu"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Erreur de prise en main des connexions acceptées:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Sortie obligatoire suite à l'endormissement de la pile TCP. Voyez la FAQ à %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "type de message reçu inconnu"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "Temps dépassé"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000..412eeb3
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,2878 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-11-07 13:30-0800\n"
+"Last-Translator: Gareth Peoples <garethppls@iol.ie>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "tarraing chun athordú a chur air"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "deaschliceáil don roghchlár"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "diailchaoi"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cábla 128k agus níos mó"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cábla 256k agus níos mó"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k agus níos mó"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Iontráil an URL torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Iontráil an URL de chomhaid torrent atá le hoscailt"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Cuir stad sealadach le gach torrent gníomhach"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Atosaigh an íoslódáil"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Tá ceann nua %s le fháil"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr ""
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Tá tú ag usáid %s agus tá an ceann nua %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Tá tú abalta an ceann nua a fháil i gcónaí ó \n"
+" %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Íoslodáil níos deanaí"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Íoslodáil anois"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Gach rud faoi %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Athraigh..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Ag ioslódáil"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Gréasán"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Ag torthaíocht port breise"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Ag tosnú ar port:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Rogha"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Ag siuil de gnáth"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..bf426e3
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,2888 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-12-05 14:48-0800\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instale Python %s ou mais novo"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "non convinte, non usar"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Cerrar todas %s as fiestras poderia arranxar o problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s actualmente en uso"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "E necesario PyGTK %s ou mais novo"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "Soltar para reordear"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Pulsar o boton dereito para menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Conexion por chamada telefonica"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable ata 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable ata 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL ata 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introduza torrent URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introduza a URL de un arquivo torrent para abrir."
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Ratio de subida maximo"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Parar temporalmente todos os torrents en funcionamento"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Continuar baixando"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova %s version dispoñibel"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Unha nova version de %s esta dispoñibel.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Vostede esta usando %s, e a nova version e %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Vostede sempre pode ter a ultima version dende \n"
+" %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Baixar_mais tarde"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Baixar_agora"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Recordamo mais tarde"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Sobre %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Non se pode abrir %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donar"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Rexistro de actividade"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Gardar rexistro en:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Rexistro gardado"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Rexistro limpo"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Axustes"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Xeral"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Arrincar BitTorrent cando Windows comeze"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizar hacia a bandexa do sistema."
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"O texto da barra de progreso e sempre negro\n"
+" (require reencender)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Gardando"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Garda as novas descargas en:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Cambia..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Pregunta onde gardar cada nova descarga"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Descargando"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Sementando"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Sementa os torrents completos: ata que o ratio de comparticion acade [_] por "
+"cento, ou para [_]minutos, o que ocurra primeiro."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Sementa indefinidamente"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Sementa o ultimo torrent completado: ata qeu o ratio de comparticion acade "
+"[_] por cento."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rede"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Busca por un porto dispoñibel."
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "empezando polo porto:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP para divulgar ao tracker"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Non ten efecto agas vostede estea na mesma\n"
+" rede local co tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"ATENCION: Cambiar estes axustes poderia\n"
+" facer que %s funcionase incorrectamente"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opcion"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Escolla carpeta de baixada por defecto"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Arquivos en \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nunca"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nunca baixar"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Baixar normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primeiro"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Baixar primeiro"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nome de arquivo"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lonxitude"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Baixado"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "Nunca"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primeiro"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Pares (iguais) para \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Enderezo IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Cliente"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Conexion"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s de baixada"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s de subida"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB baixados"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB subidos"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completado"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "Baixada estimada de pares KB/s"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Par (igual) ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesado"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Estrangulado"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "No aceptado"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Subida esperada"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remota"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "mal par (igual)"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d mal"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "prohibido"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "informacion de \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nome do torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(trackerless torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Anunciar url"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", en un arquivo"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr "en %d arquivos"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Tamaño total"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Pezas"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "info do picadillo (hash):"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Gardar en:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nome do arquivo:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Abrir carpeta"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrar_lista de arquivos"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "informacion de o torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Eliminar torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Abortar torent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ",sementarase para %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ",sementarase indefinidamente."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Feito, ratio de comparticion: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Feito, %s subido"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Feito"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Informacion do_torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista de Arquivos"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Lista de pares (iguais)"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Trocar localizacion"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Sementar indefinidamente"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_comenzar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finalizar"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Borrar"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Abortar"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Esta vostede seguro de que desexa borrar \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "O seu ratio de comparticion para este torrent e de %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Vostede subiu %s para este torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Borrar este torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Terminado"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "Soltar na lista para sementar"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Fallou"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "soltar na lista para continuar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Agardando"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Parado"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Funcionando"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Subida actual: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Baixada actual: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Subida previa: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Baixada previa: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Ratio de comparticion: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s pares, %s sementadores. Totais do tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copias dsitribuidas: %d; Seguinte: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Pezas: %d total, %d completa, %d parcial, %d activa (%d baleira)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d pezas erroneas + %s en peticions descartadas"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% feito, %s por facer"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Ratio de baixada"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Ratio de subida"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s comenzado"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Sair"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Abrir arquivo torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Abrir torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Facer_novo torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/Comezar"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostrar/Ocultar_torrent acabados"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Cambiar fiestra para que quepa"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_informe"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Axustes"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Axuda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Sobre"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Doar"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Arquivo"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ver"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Buscar por torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(parado)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(multiple)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Sen torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Funcionando normalmente"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..c72d256
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,2796 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 07:22+0200\n"
+"Last-Translator: \n"
+"Language-Team: Ben's Project <senseBOP@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Hebrew\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "יש להתקין Python בגירסה %s או גבוהה יותר"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "מיושן, לא להשתמש"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "נכשלה תקשורת לתהליך %s אחר, אבל נראה שתהליך כזה רץ"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "סגירת כל חלונות %s עשויה לפתור את הבעיה."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s כבר פועל."
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "נכשלה תקשורת לתהליך %s"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "נדרש PyGTK בגירסה %s או גבוהה יותר"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "גרור לסידור מחדש"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "לחיצה ימנית לפתיחת תפריט"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "חיבור בחיוג"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/כבלים 128ק\"ב ומעלה"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/כבלים 256ק\"ב ומעלה"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768 ק\"ב ומעלה"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "הכנס את כתובת האינטרנט של קובץ הטורנט:"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "הכנס את כתובת האינטרנט של קובץ הטורנט לפתיחה:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "קצב העלאה מרבי:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "עצור זמנית את כל ההורדות הפעילות"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "המשך הורדה"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "גירסת %s חדשה זמינה להורדה"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "גירסת %s חדשה יותר זמינה להורדה.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "הנך משתמש/ת בגרסה %s, הגירסה החדשה היא %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "באפשרותך להשיג תמיד את הגרסה החדשה מ-\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "הורד _אחר כך"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "הורד _כעת"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "הזכר לי _מאוחר יותר"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "אודות %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "בטא"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "גירסה %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s לא נפתח"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "תרום"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s תיעוד פעילות"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "שמור תיעוד ב-:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "תיעוד נשמר"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "תיעוד הוסר"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "הגדרות %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "כללי"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "הפעל את BitTorrent בעת כניסה לחלונות"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "הקטן לאזור הודעות"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "טקסט סרגל ההתקדמות תמיד שחור\n(דורש הפעלה מחדש)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "שומר"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "שמור הורדות חדשות ב:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "שנה..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "שאל היכן לשמור כל הורדה חדשה"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "מוריד"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "כאשר מתחיל טורנט חדש"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "עצור טורנט אחר כדי לפנות מקום"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "על תעצור טורנטים אחרים"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "תשאל בכל פעם"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "מפיץ"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"הפץ קובצי טורנט שהסתיימו : עד שאחוז השיתוף יגיע ל- [_] אחוז, או למשך [_] דקות, הקודם מביניהם."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "הפץ ללא מגבלה"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "הפץ טורנט שהסתיים לאחרונה:עד שאחוז השיתוף יגיע ל :[_] אחוז."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "רשת"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "חפש פורט זמין:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "מתחיל בפורט:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "אפשר מיפוי פורטים אוטומטי"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "כתובת IP לצורך דיווח לטראקר:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(חסר השפעה אלא אם אתה על\nאותה הרשת המקומית של הטראקר)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "אזהרה: שינוי ההגדרות הללו יכול\nלמנוע מ-%s לתפקד כראוי."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "אפשרות"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "ערך"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "מתקדם"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "בחר תיקיית הורדות כברירת מחדל"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "נכשלה מחיקת קיצור דרך: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "קבצים ב-\"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "לעולם לא"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "אל תוריד לעולם"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "רגיל"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "הורד באופן רגיל"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "ראשון"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "הורד ראשון"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "שם הקובץ"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "אורך"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "הורדה"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "אף פעם לא"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "ראשון"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr " \"%s\" משתמשים ל-"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "כתובת IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "לקוח"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "חיבור"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "מהירות הורדה"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "מהירות העלאה"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "כמות ה-MB שהורדו"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "כמות ה-MB שהועלו"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "סיים %"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "קצב הורדה משוער למשתמש (KB/s)."
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "זהות משתמש"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "מעוניין"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "חנוק"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "דחוי"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "העלאה אופטימית"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "מרוחק"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "מקומי"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "משתמש רע"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d בסדר"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d רע"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "מוחרם"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "אישור"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "מידע ל-\"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "שם הטורנט:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "טורנט ללא טראקר (עוקב))"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "הכרז על כתובת:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", בקובץ אחד"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", ב-%d קבצים"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "גודל כולל:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "קטעים:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "סדרן מידע"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr " שמור ב :"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "שם קובץ :"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_פתח ספרייה"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "הראה _רשימת קבצים"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "נתוני הטורנט"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "הסר טורנט"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "בטל טורנט"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", יופץ במשך %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", יופץ ללא מגבלה."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "סיים, יחס שיתוף %d%%."
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "סיים, %s הועלה"
+
+#: bittorrent.py:1851 bittorrent.py:2287
+msgid "Done"
+msgstr "הסתיים"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_נתוני טורנט"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "רשימת _קבצים"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "רשימת _משתמשים"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_שנה מיקום"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_הפץ ללא מגבלה"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "התחל_מחדש"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_סיים"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_הסר"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_בטל משימה"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "האם אתה בטוח שברצונך להסיר את \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "יחס השיתוף שלך לטורנט זה הוא %d%%"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "העלת לטורנט זה %s"
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "להסיר את הטורנט?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "סיים"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "משוך לרשימה להפצה"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "נכשל"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "משוך לרשימה לחידוש פעילות"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "ממתין"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "מושהה"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "פועל"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "העלאה נוכחית: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "הורדה נוכחית: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "העלאה קודמת: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "הורדה קודמת: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "יחס שיתוף: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s משתמשים, %s מפיצים. סה\"כ מטראקר: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "עותקים שסופקו: %d; הבא: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "חלקים: %d סה\"כ, %d הסתיימו, %d נסתיימו חלקית, %d פעילים (%d ריקים)."
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d קטעים פגומים + %s בבקשות שנזרקו"
+
+#: bittorrent.py:2303
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% הסתיים, %s נותר"
+
+#: bittorrent.py:2311
+msgid "Download rate"
+msgstr "קצב הורדה"
+
+#: bittorrent.py:2313
+msgid "Upload rate"
+msgstr "קצב העלאה"
+
+#: bittorrent.py:2328
+msgid "NA"
+msgstr "לא זמין"
+
+#: bittorrent.py:2770
+#, python-format
+msgid "%s started"
+msgstr "%s הופעל."
+
+#: bittorrent.py:2784
+msgid "_Quit"
+msgstr "_יציאה"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "יציאה"
+
+#: bittorrent.py:2788
+msgid "_Open torrent file"
+msgstr "_פתח קובץ טורנט"
+
+#: bittorrent.py:2789
+msgid "Open torrent _URL"
+msgstr "פתח _כתובת אינטרנט של הטורנט"
+
+#: bittorrent.py:2790
+msgid "Make _new torrent"
+msgstr " צור קובץ טורנט _חדש"
+
+#: bittorrent.py:2793
+msgid "_Pause/Play"
+msgstr "_השהה/הפעל"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "_הצג/הסתר טורנטים שהסתיימו"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "התאם _גודל חלון"
+
+#: bittorrent.py:2801
+msgid "_Log"
+msgstr "_תיעוד"
+
+#: bittorrent.py:2804
+msgid "_Settings"
+msgstr "הגד_רות"
+
+#: bittorrent.py:2807 bittorrent.py:2823
+msgid "_Help"
+msgstr "_עזרה"
+
+#: bittorrent.py:2809
+msgid "_About"
+msgstr "_אודות"
+
+#: bittorrent.py:2810
+msgid "_Donate"
+msgstr "תר_ום"
+
+#: bittorrent.py:2814
+msgid "_File"
+msgstr "_קובץ"
+
+#: bittorrent.py:2819
+msgid "_View"
+msgstr "ה_צג"
+
+#: bittorrent.py:2859
+msgid "Search for torrents"
+msgstr "חפש קובצי טורנט"
+
+#: bittorrent.py:3013
+msgid "(stopped)"
+msgstr "(נעצר)"
+
+#: bittorrent.py:3025
+msgid "(multiple)"
+msgstr "(מכפל)"
+
+#: bittorrent.py:3155
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "כבר מוריד תוכנית התקנה %s "
+
+#: bittorrent.py:3159
+#, python-format
+msgid "Install new %s now?"
+msgstr "התקן %s חדש עכשיו?"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "האם אתה רוצה לצאת מ-%s ולהתקין את הגרסה החדשה, %s, עכשיו?"
+
+#: bittorrent.py:3176
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "עזרה של %s\n נמצאת ב-%s\nהאם ברצונך לעבור לשם עכשיו?"
+
+#: bittorrent.py:3179
+msgid "Visit help web page?"
+msgstr "האם ברצונך לבקר בדף העזרה באינטרנט?"
+
+#: bittorrent.py:3216
+msgid "There is one finished torrent in the list. "
+msgstr "יש הורדה אחת שהסתיימה ברשימה."
+
+#: bittorrent.py:3217
+msgid "Do you want to remove it?"
+msgstr "האם ברצונך להסיר אותה?"
+
+#: bittorrent.py:3219
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "יש %d הורדות שהסתיימו ברשימה."
+
+#: bittorrent.py:3220
+msgid "Do you want to remove all of them?"
+msgstr "האם ברצונך להסיר את כולן?"
+
+#: bittorrent.py:3222
+msgid "Remove all finished torrents?"
+msgstr "האם להסיר את כל ההורדות שהסתיימו?"
+
+#: bittorrent.py:3230
+msgid "No finished torrents"
+msgstr "אין הורדות שהסתיימו."
+
+#: bittorrent.py:3231
+msgid "There are no finished torrents to remove."
+msgstr "אין הרדות שהסתיימו להסרה."
+
+#: bittorrent.py:3285
+msgid "Open torrent:"
+msgstr "פתח קובץ טורנט:"
+
+#: bittorrent.py:3309
+msgid "Change save location for "
+msgstr "שנה מיקום שמירה עבור"
+
+#: bittorrent.py:3336
+msgid "File exists!"
+msgstr "קובץ קיים!"
+
+#: bittorrent.py:3337
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" כבר קיים. האם ברצונך לבחור שם קובץ אחר?"
+
+#: bittorrent.py:3356
+msgid "Save location for "
+msgstr "שמור מיקום עבור"
+
+#: bittorrent.py:3374
+msgid "Directory exists!"
+msgstr "תיקייה קיימת!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"התיקייה \"%s\" כבר קיימת. באם בכוונתך ליצור עותק תיקייה זהה בתוך התיקייה הנוכחית?"
+
+#: bittorrent.py:3499
+#, python-format
+msgid "(global message) : %s"
+msgstr "(הודעה גלובאלית) : %s"
+
+#: bittorrent.py:3506
+#, python-format
+msgid "%s Error"
+msgstr "שגיאה %s"
+
+#: bittorrent.py:3512
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "מספר שגיאות התרחשו. לחץ על אישור בכדי לראות את תיעוד השגיאות."
+
+#: bittorrent.py:3679
+msgid "Stop running torrent?"
+msgstr "לעצור הרצת טורנט?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "אתה עומד להתחיל את \"%s\". האם ברצונך לעצור גם את הטורנט הרץ?"
+
+#: bittorrent.py:3691
+msgid "Have you donated?"
+msgstr "האם כבר תרמת?"
+
+#: bittorrent.py:3692
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "ברוכים הבאים לגרסה החדשה של %s. האם כבר תרמת?"
+
+#: bittorrent.py:3707
+msgid "Thanks!"
+msgstr "תודה רבה!"
+
+#: bittorrent.py:3708
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr "תודה רבה על תרומתך! כדי לתרום שוב, בחר \"תרום\" מתוך תפריט \"עזרה\"."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "אין אפשרות להתחיל את תור הטורנט, ראה רשימת שגיאות לעיל."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s יוצר קובץ טורנט %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "צור קובץ טורנט עבור קובץ/תיקייה זה/זו:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "בחר..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(תיקיות יהפכו לאצוות קובצי טורנט)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "גודל קטע:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "השתמש ב_טראקר:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "_DHT-השתמשי ב"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "צמתים (אופציונלי):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ":הערות"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_צור..."
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_שרת"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_פורט"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "...בונה קובצי טורנט"
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "...בודקת גודל קבצים"
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "התחל הפצה"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "בונה"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ".סיים"
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ".סיים לבנות קובצי טורנט"
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "!שגיאה"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ":שגיאה בבניית קובצי טורנט"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "דרוש GTK בגירסה %s או גבוהה יותר"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d ימים"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "יום אחד ו-%d שעות"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d שעות"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d דקות"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d שניות"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 שניות"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "עזרה %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "שאלות נפוצות:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "התחל"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "בחר תיקייה קיימת..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "כל הקבצים"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "קובצי טורנט"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "צור תיקייה חדשה..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "בחר קובץ"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "בחר תיקייה"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "לא ניתן לטעון מצב שמור."
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "לא ניתן לשמור מצב UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "תוכן קובץ מצב לא תקף"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "שגיאה בקריאת הקובץ \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "לא ניתן לשחזר את המצב באופן מלא"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "קובץ מצב לא תקף(ערך כפול)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "מידע מזובל ב\"%s\", לא יכול לשחזר טורנט"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(חוסר התאמה בסדרן מידע)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "קובץ מצב לא תקף(ערך פגום)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "קובץ מצב UI פגום"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "גרסת קובץ מצב UI פגומה"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "גרסת קובץ מצב UI לא נתמכת (מתוך גרסת לקוח חדשה יותר?)"
+
+#: BitTorrent/TorrentQueue.py:489
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "לא יכול למחוק קובץ %s שמור:"
+
+#: BitTorrent/TorrentQueue.py:530
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "זהו לא קובץ טורנט חוקי. (%s)"
+
+#: BitTorrent/TorrentQueue.py:538
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "הטורנט הזה (או אחד עם אותו התוכן) כבר פועל."
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "הטורנט הזה (או אחד עם אותו התוכן) כבר מחכה להפעלה."
+
+#: BitTorrent/TorrentQueue.py:549
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "הטורנט במצב לא ידוע %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "לא ניתן לכתוב קובץ"
+
+#: BitTorrent/TorrentQueue.py:568
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "הטורנט לא יופעל מחדש בצורה נכונה בהפעלה מחדש של התוכנה"
+
+#: BitTorrent/TorrentQueue.py:671
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"לא ניתן להפעיל יותר מ-%d קובצי טורנט בעת ובעונה אחת. למידע נוסף, ראה שאלות נפוצות ב-%s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"לא מפעיל קובץ טורנט מכיוון שיש קובצי טורנט אחרים שממתינים להפעלה, וקובץ זה כבר עונה על ההגדרות לעצירת ההפצה."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"לא מפעיל קובץ טורנט מכיוון שהוא כבר עונה על ההגדרות לעצירת ההפצה של קובץ הטורנט האחרון שהסתיים."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "לא ניתן לקבל את הגרסההאחרונה מ-%s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "לא ניתן לפצל לקטעים מחרוזת גרסה חדשה מתוך %s "
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "לא נמצא מיקום זמני מתאים לשמירת תוכנית ההתקנה של %s %s"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "אין קובץ טורנט זמין עבור תוכנית התקנה של %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "נראה שהתקנת %s %s לא מלאה, חסרה או מקולקלת"
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "לא ניתן להפעיל את תוכנית ההתקנה על מערכת הפעלה זו."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "אין קובצי טורנט"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "מתחיל הורדה"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "הפעלה תקינה"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "ייתכן שהורדות איטיות:\nאולי מאחורי חומת אש/NAT (תרגום כתובת)"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "בדוק קישור רשת"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"הספרייה שבה נשמרים נתונים משתנים, כגון נתונים להפעלה-מחדש מהירה ולממשק המשתמש הגרפי. ברירות מחדל לתיקיית-משנה 'נתונים' של תיקיית התצורה של bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"נעשה שימוש בקידוד תווים במערכת הקבצים המקומית. זיהוי אוטומטי אם נשאר ריק. הזיהוי האוטומטי אינו פועל בגרסאות python שקודמות לגרסה 2.3 "
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "להשתמש בקוד שפה ISO "
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"כתובת ip לצורך דיווח לטראקר (חסר השפעה, אלא אם כם אתה ברשת המקומית של הטראקר)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr "מספר פורט גלוי-לעולם, אם שונה מזה שלו הלקוח מאזין ברשת המקומית"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "הפורט המינימלי להאזנה, נספר כלפי מעלה אם לא זמין."
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "הפורט המרבּי להאזנה"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "כתובת ip לצורך קשר מקומי"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "השניות בין עדכוני המידע המוצג"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "הדקות להמתנה בין בקשת משתמשים נוספים."
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "מספר מינימלי של משתמשים עד לבקשה חוזרת "
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "מספר המשתמשים שבו יש להפסיק ליזום חיבורים חדשים"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "מספר מרבי של חיבורי תקשורת לא גמורים"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"המספר המרבי של חיבורים שיש לאפשר, שלאחריו חיבורים חדשים ייסגרו באופן מיידי"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "האם לבדוק פיצולים בדיסק"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "מהירות העלאה מקסימלת (בקילו-בייטים), 0 פירושו ללא מגבלה"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "מספר ההעלאות שיש להשלים עם פתיחת חסימות אופטימית במיוחד"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"המספר המרבי של קבצים בהורדה מרובת-קבצים שיש לשמור פתוחים בעת ובעונה אחת, 0 פירושו ללא מגבלה. משמש כדי למנוע מחסור בתיאורי קבצים."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"אתחל לקוח ללא טראקר. אפשרות זו חייבת להיות מופעלת כדי להוריד קובצי טורנט ללא טראקר."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "מספר השניות להשהייה בין שיגורים של הודעות \"השאר פעיל\""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "כמה בייטים לבקש בכל בקשה."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"האורך המרבי של קידוד תחילית שתקבל בקשר הקווי - ערכים גבוהים יותר יגרמו לניתוק החיבור."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "כמה שניות לחכות בין סגירת סוקטים שלא התקבל בהם דבר "
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "כמה שניות לחכות בין בדיקה האם אחת מההתקשרויות נפסקה"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"אורך הנתח המרבי שיש לשלוח למשתמשים, ולסגור את החיבור אם מתקבלת בקשה גדולה יותר"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "פרק הזמן המרבי שלאורכו יש להעריך את קצב ההעלאה וקצב ההורדה הנוכחיים"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "פרק הזמן המרבי שלאורכו יש להעריך את קצב ההפצה הנוכחי"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"משך הזמן המרבי שיש להמתין בין שיגור הודעות \"נסה שוב\" אם הן ממשיכות ונכשלות"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"מספר השניות שיש להמתין להגעת הנתונים בחיבור לפני שמניחים שהחיבור חנוק באופן כמעט קבוע"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "מספר ההורדות שבו יש לעבור ממצב \"אקראי\" למצב \"הנדיר ביותר ראשון\""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "כמה בייטים לכתוב למחיצות הרשת בעת ובעונה אחת."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"מסרב לחיבורים נוספים מכתובות של משתמשים עוינים במכוון, ששולחים נתונים לא נכונים"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "אל תתקשר למספר משתמשים עם אותה כתובת IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "אם הערך אינו אפס, הגדר את אפשרות TOS עבור חיבורי משתמשים לערך זה"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr "אפשר עקיפה בגלל באג ב-BSD libc שגורם לקריאה אטית מאוד של הקובץ."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "כתובת שרת HTTP שבו יש להשתמש עבור חיבורי טראקר"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "סגור חיבורים עם RST והימנע ממצב TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"השתמש בספריות רשת מפותלות לצורך חיבורי רשת. 1 פירושו השתמש במפותלות, 0 פירושו אל תשתמש במפותלות, 1- פירושו זיהוי-אוטומטי ועדיפות למפותלות"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"שם קובץ (עבור קובץ טורנט יחיד) או שם תיקייה (עבור אצוות של קובצי טורנט) לצורך שמירה, במקום שם ברירת המחדל שבטורנט. ראה גם -- שמור _ב-. אם לא נבחרה אחת מהאפשרויות, המשתמש יתבקש לציין מיקום לשמירה"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "הצג ממשק משתמש מתקדם"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "מספר הדקות המרבי להפצת טורנט שהסתיים עד להפסקת ההפצה"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"יחס ההעלאה/הורדה המינימלי, באחוזים, אליו יש להגיע לפני הפסקת ההפצה. 0 פירושו ללא מגבלה."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"יחס ההעלאה/הורדה המינימלי, באחוזים, אליו יש להגיע לפני הפסקת ההפצה של הטורנט האחרון. 0 פירושו ללא מגבלה."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "הפץ כל קובץ טורנט שהסתיים ללא מגבלת זמן (עד שהמשתמש מבטל אותו)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "הפץ את קובץ הטורנט האחרון ללא מגבלת זמן (עד שהמשתמש מבטל אותו)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "התחל הורדה במצב \"מושהה\""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"מציין כיצד ה-app צריך להתנהג כאשר המשתמש מנסה להפעיל טורנט נוסף, ידנית: \"החלף\" פירושו החלף תמיד את הטורנט המופעל בטורנט החדש, \"הוסף\" פירושו הוסף תמיד את הטורנט המופעל במקביל, ו\"שאל\" פירושו שאל את המשתמש בכל פעם."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "התחל את BitTorrent מוקטן"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"עקוף את הגרסה שסופקה על ידי גרסת ה-http בדוק ואפשר בדיקת גרסאות מצב ניפוי באגים "
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"עקוף את הגרסה הנוכחית שבה נעשה שימוש בבדיקת הגרסאות ואפשר בדיקת גרסאות מצב ניפוי באגים"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "ציין גודל חלון ומיקום, על פי התבנית: רוחבxגובה+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"שם קובץ (עבור קובץ טורנט יחיד) או שם תיקייה (עבור אצוות של קובצי טורנט) לצורך שמירה, במקום שם ברירת המחדל שבטורנט. ראה גם -- שמור _ב-"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"המספר המרבי של העלאות שיש להתיר בפעם אחת. 1- פירושו (יש לקוות) מספר סביר שמבוסס על המשתנה max_upload_rate. הערכים האוטומטים סבירים רק כאשר מרימים טורנט אחד בכל פעם."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"התיקייה המקומית שבה יש לשמור את תוכן הטורנט. הקובץ (במקרה של קובץ טורנט יחיד) או התיקייה (אצוות קובצי טורנט) יווצרו בתיקייה זו תוך שימוש בשם ברירת המחדל המצוין בקובץ עם הסיומת .torrent. ראה גם שמירה_בשם."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "האם לבקש מיקום לשמירת קבצים שהורדו, או לא"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"התיקייה המקומית שבה יישמרו קובצי הטורנט, תוך שימוש בשם שנקבע על ידי המשתנה Saveas_style. אם השדה נשאר ריק, כל קובצץ טורנט יישמר בתיקייה של הקובץ המתאים בעל הסיומת .torrent "
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "באיזו תדירות לסרוק-מחדש את תיקיית הטורנט, בשניות"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"מספר שניות לחכות לאחר קליטת טורנט לפני תחילת הורדתו, כדי להימנע מתחרות עם העוקב"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"כיצד לקבוע שמות להורדות של קובצי טורנט: 1: השתמש בשם של קובץ הטורנט (ללא הסיומת .torrent); 2: השתמש בשם שמקודד בתוך קובץ הטורנט; 3: צור תיקייה עם השם של קובץ הטורנט (ללא הסיומת .torrent) ושמור באותה תיקייה תוך שימוש בשם שמקודד בתוך קובץ הטורנט; 4: אם השם של קובץ הטורנט (ללא הסיומת .torrent) והשם שמקודד בתוך קובץ הטורנט זהים, השתמש בשם זה (סגנון 1/2), אחרת צור תיקיית ביניים כמו בסגנון 3; זהירות: אפשרויות 1 ו-2 מסוגלות לדרוס קבצים ללא התראה מראש ולהעלות סוגיות של הגנה על קבצים."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "האם להציג את הנתיב המלא או את תוכן הטורנט עבור כל קובץ טורנט"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "התיקייה שבה יש לחפש קבצים עם סיומת .torrent (באופן חוזר ונשנה למחצה)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "האם להציג נתוני אבחון ל-stdout "
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "לאיזו חזקה של שתיים להגדיר את גודל הקטע"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "שם טראקר ברירת-מחדל"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"אם מוטעה, צור טורנט ללא טראקר, במקום להכריז על כתובת אינטרנט, השתמש בצומת אמין בצורת <ip>:<port> או במחרוזת ריקה כדי למשוך מספר צמתים מטבלת הניתוב שלך "
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "הורדה נסתיימה!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<לא ידוע>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "מסיים בעוד %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "ההורדה הצליחה"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f מגה-בייט העלאה / %.1f מגה-בייט הורדה)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f מגה-בייט העלאה / %.1f מגה-בייט הורדה)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d נראים כעת, בתוספת %d עותקים מופצים (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d עותקים מופצים (הבא: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d נראים כעת"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "שגיאה: \n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "שומר:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "גודל הקובץ:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "אחוזים שנסתיימו:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "זמן שנשאר:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "הורד ל:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "קצב הורדה:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "קצב העלאה:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "יחס שיתוף:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "מצב מעלה:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "מצב משתף:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "אינך יכול לתת --save_as וגם --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "סוגר"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "שגיאה בקריאת תצורה:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "שגיאה בקריאת קובץ טורנט:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "אתה חייב לתת קובץ טורנט:"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "שגיאה באיתחול ממשק גרפי במצב טקסט, לא יכול להמשיך."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"ממשק ההורדה הזה דורש את מודול סטנדרטי של Python בשם \"curses\", שלצערנו לא קיים בגירסת חלונות של Python. הוא כן קיים בגירסת Cygwin של Python, אשר עובדת בכל הגירסאות של חלונות (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "אתה עדיין יכול להשתמש ב-\"קונסולת-ביטורנט\" להורדה."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "קובץ:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "גודל:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "יעד:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "התקדמות:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "מצב:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "מהירות הורדה:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "מהירות העלאה:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "שיתוף:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "מעלים:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "משתפים:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d נראו כעת, בתוספת %d עותקים מופצים (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "שגיאה(s):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "שגיאה"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+"# אי.פי העלאה הורדה סיים מהירות"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "מוריד %d חלקים, ישנם %d קטעים, %d מתוך %d חלקים הסתיימו."
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "השגיאות הללו קרו בזמן הביצוע:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "%s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ] :דוגמא"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "הכרזות ישנות בשביל %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "אין טורנטים"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+#, fuzzy
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "שגיאת מערכת - נוצרו חריגים"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "אזהרה:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " היא לא תיקייה"
+
+#: launchmany-console.py:66
+#, fuzzy, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "שגיאה: %s\nהפעלה ללא ארגומנטים "
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\n יוצא מהכלל:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "אתה עדיין יכול להשתמש ב: \"btdownloadheadless.py\" להורדה."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "מתחבר למשתפים"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "צפוי להסתיים ב-%d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "גודל"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "העלאה"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "סה\"כ:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr " (%s) %s - %s משתמשים %s מקורות %s עותקים מופצים - %s הורדה %s העלאה"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "שגיאה:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nהרץ ללא פרמטרים להסברים"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "הערה לא מחוייבת בשפה אנושית לטורנט"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "קובץ יעד לא מחייבת לטורנט"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "%s [TORRENTFILE [TORRENTFILE ... ] ] :דוגמא"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "%s :קובץ מטא-מידע"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "%s :האש מידע"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "%s :שם קובץ"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "....גודל קובץ:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ":קבצים"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "%s :שם תיקייה"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ":גודל קובץ"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "%s :כתובת הכרזה"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ":הערה"
+
+#: BitTorrent/RawServer_twisted.py:303
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:518 BitTorrent/RawServer_twisted.py:532 BitTorrent/RawServer_twisted.py:555
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:721
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:733
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "יום שני"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "יום שלישי"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "יום רביעי"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "יום חמישי"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "יום שישי"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "יום שבת"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "יום ראשון"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "ינואר"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "פברואר"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "מרץ"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "אפריל"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "מאי"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "יוני"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "יולי"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "אוגוסט"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "ספטמבר"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "אוקטובר"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "נובמבר"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "דצמבר"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "דחוס: %i. פרוס: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "לא יכל לשמור את ההגדות לתמיד:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "הקובץ %s שייך לטורנט אחר שפועל כרגע."
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "הקובץ %s כבר קיים, אבל הוא לא קובץ רגיל."
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "בודק קובץ קיים"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "המידע פגום על הדיסק - אולי יש לך שני עותקים פועלים?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "נאמר שהקובץ הסתיים בהפעלה, אך חלק נכשל בבדיקת hash"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, fuzzy, python-format
+msgid "dropped \"%s\""
+msgstr "הפיל את \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "הוסיף את \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "מחכה לבדיקת hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "מוריד"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "קורא מחדש את קובץ ההגדרות"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "קידוד מערכת הקבצים\"%s\" אינו נתמך בגרסא זו."
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "לא ניתן לקרוא את התיקייה"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "מסיר את %s (יתווסף-מחדש)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**אזהרה** %s הוא טורנט משוכפל ל-%s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**אזהרה** ל-%s יש שגיאות"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... הצליח"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "מסיר %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "סיים בדיקה"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "לא יכל לקרוא את %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"לא יכל להוריד או לפתוח את \n %s \n נסה להשתמש בדפדפן בכדי להוריד את קובץ הטורנט."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "בעיה בהתקשרות לטראקר - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "מידע פגום מהטראקר - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "נדחה ע\"י הטראקר - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "הודעה מהטראקר:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "אזהרה מהטראקר - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "השם %s אסור מסיבות בטחוניות."
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "רשימת משתפים שגויה"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "זיהוי טראקר שגוי"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ספירת משתפים שגויה"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ספירת מעלים שגויה"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ערך \"last\" שגוי"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "שימוש: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIONS] [TORRENTFILES]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIONS] [TORRENTFILE]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTION] TRACKER_URL FILE [FILE]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "הארגומנטים הם - \n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "מקש לא ידוע"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "אפשרות %s דרוש"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "חייב לספק לפחות %d ארגומנטים."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "יותר מדי ארגומנטים - %d מקסימים."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "פורמט שגוי של %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "פורט מקשיב על."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "שניות בין שמירת dfile"
+
+#: BitTorrent/track.py:52
+#, fuzzy
+msgid "seconds between expiring downloaders"
+msgstr "שניות בין סיום מורידים"
+
+#: BitTorrent/track.py:54
+#, fuzzy
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "שניות שמורידים צריכים לחכות בין הכרזה-מחדש"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "זמן לחכות בין בדיקה האם קישור כלשהו נסגר"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr "כמה פעמים לבדוק האם מוריד נמצא מאחורי NAT (0 = אל תבדוק)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "האם להוסיף ערכים לקובץ התיעוד לתוצאות בדיקת NAT"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr "האם להציג עמוד מידע כאשר תיקיית ברירת המחדל של הטראקר נטענה"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:267
+msgid "Can't start two separate instances of the same torrent"
+msgstr "לא ניתן להתחיל שתי הפעלות שונות של אותו הטורנט"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "פורט מקסימלי קטן מפורט מינימלי - אין פורטים לבדיקה."
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "לא יכל לפתוח פורט האזנה: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "לא יכל לפתוח פורט האזנה: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "בדוק את הגדרות טווח הפורטים שלך."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "הפעלה ראשונית"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "יבצע בדיקת hash מלאה."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "חלק %d נכשל בבדיקת hash, החלק מורד-מחדש."
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr "ניסיון להוריד טורנט ללא טרקר בלי האפשרות של \"ללא-טרקר\" מופעלת."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "הורדה נכשלה:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "נסגר בגלל שגיאת מערכת הפעלה:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "שגיאה נוספת בזמן סגירה בגלל שגיאה:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "העלאה"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "סגירה"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+".ASCII נראה כי זו גרסת פייטון שאינה תומכת בזיהוי קידוד קבצי מערכת. אני נאלצת לנחש כי זהו קידוד"
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ".במקום ASCII-פייטון לא הצליח למצוא קידוד קבצי מערכת. משתמשת ב"
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "קידוד מערכת קבצים %s לא נתמך. השתמש ב-ascii במקום."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "לא יכל ליצור סוקט שליטה: כבר נמצא בשימוש."
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "לא יכל ליצור סוקט שליטה."
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "לא יכל לשלוח פקודה:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "לא הצליח למצוא פורט פתוח!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "לא הצליח ליצור תיקיית מידע תהליך!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "הפעלה קודמת של ביטטורנט לא \"נוקתה\" כראוי. ממשיך."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "איבוד סוקט של השרת."
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100644
index 0000000..1b9a0a8
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,2900 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-11-02 19:01-0800\n"
+"Last-Translator: djryback <djryback@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "iskorišteno, ne koristite"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Zatvaranje svih %s windows može popraviti problem."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s je već u tijeku"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "Povucite da promijenite razmještaj"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Desni klik za menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Dialup veza"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kabel 128k ili brža"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kablovska 256k ili brža"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k ili brža"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1 veza"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1 veza"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1 veza"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3 veza"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3 veza"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Unesite URL torrent-a"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Unesite URL od .torrent file-a da ga otvorite:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximalna brzina upload-a:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Trenutno zaustavi sve torrente koji su u tijeku"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Nastavi prijenos"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova verzija %s je dostupna za preuzimanje"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Novija verzija programa %s je dostupna.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Vi koristite %s, a nova verzija je %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Najnovija verzija je uvijek dostupna na \n"
+" %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Nastavi_kasnije"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Preuzmi _sad"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Podsjeti me kasnije"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "O programu %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Verzija %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Ne mogu otvoriti %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Doniraj"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Bilješke korištenja"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Spremi log kao:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Log je spremljen"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Log je očišćen"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Postavke"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Progresivni bar tekst je uvijek crne boje\n"
+" (zahtijeva restart)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Spremam"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Spremi novu datoteku u:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Promijeni..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Pitaj gdje da se spremi svaka nova datoteka"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Preuzimam"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seeding"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Seed je završio torrente: dok ne razina dijeljenja dosegne [_] posto, ili za "
+"[_] minuta ili bilo što prvo dođe."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seed beskonačno"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seed zadnji završeni torrent: dok razina dijeljenja ne dosegne [_] posto."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Mreža"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Potraži slobodan port:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Port u korištenju:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP adresa za prijavljivanje na tragače:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Nema utjecaja sve dok niste na istoj\n"
+" lokalnoj mreži kao tragač)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"UPOZORENJE: Mijenjanje ovih postavki može\n"
+" pogoršati rad %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opcija"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Vrijednost"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Napredno"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Odaberite direktorij za spremanje datoteka"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Datoteke u \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nikada nemoj preuzeti"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Ime datoteke"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Dužina"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peer-ovi za \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adresa"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klijent"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Veza"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s dolje"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s gore"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB preuzeto"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB poslano"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% završeno"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s otprilike za preuzimanje"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Zanimate li se"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Prigušeno"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Izbacen"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistično učitavanje"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "Daljinsko"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "Lokalno"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "Pogrešni peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d u redu"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d loše"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "Zabranjen"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "U redu"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informacije za \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Ime torrent-a:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent bez tragača)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Predstavi URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", u jednoj datoteci"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", u %d datotekama"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Ukupna veličina:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Dijelova:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Spremi u:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Ime datoteke:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Otvori direktorij"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Izbriši torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Prekini torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", će seed za %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", će seed beskonačno."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Završeno, udio dijeljenja: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Završeno, %s učitano"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Završeno"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista datoteka"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Peer _lista"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "P_romijeni lokaciju"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "See_d beskonačno"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "R_estart"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Završi"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Izbriši"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Pre_kini"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Da li ste sigurni da želite izbrisati \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Vaš udio dijeljenja za ovaj torrent je %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Učitali ste %s za ovaj torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Izbriši ovaj torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Završeno"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "dovuci u listu za seed"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Nije izvršeno"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "dovuci u listu da nastaviš"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Na čekanju"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pauzirano"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "U tijeku"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Trenutno gore: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Trenutno dolje: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Bilo je gore: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Bilo je dolje: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Udio dijeljenja: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peer-ova, %s seed-ova. Od tragača je bilo: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Distribuiranih kopija: %d; Sljedeće: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Dijelova: %d totalno, %d završeno, %d djelomično završeno, %d aktivno (%d "
+"prazno)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d loših dijelova + %s u izbačenim zahtjevima"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% završeno, %s preostalo"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Brzina preuzimanja"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Brzina učitavanja"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Nepoznato"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s započeto"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Izlaz"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Otvori torrent datoteku"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Ot_vori torrent URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "_Napravi novi torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "Pauza/Pla_y"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Pri_kaži/Sakrij završene torrent-e"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Prila_godi veličini prozora"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Postavke"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "Po_moć"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_O programu"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Doniraj"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Dokument"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Pogledaj"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Trazi torrente"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(zaustavljeno)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(povećaj)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Preuzimanje %s installer-a je već u tijeku"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Instaliraj novi %s sada?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Da li želite izaći iz %s i instalirati novu verziju, %s, sada?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s pomoć je na \n"
+"%s\n"
+"Da li želite ići tamo sada?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Posjeti help web stranicu?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Ima jedan završeni torrent u listi."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Da li želite izbrisati?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Ima %d završenih torrent-a u listi."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Da li želite izbrisati sve torrent-e?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Izbriši sve završene torrent-e?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nema završeni torrent-a"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nema završenih torrent-a koji bi se mogli izbrisati."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Otvori torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Promijeni lokaciju spremanja za"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Datoteka već postoji!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" već postoji. Da li želite izabrati drugo ime datoteke?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Lokacija spremanja za"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Direktorij vec postoji!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" vec postoji. Da li ste mozda htjeli napraviti identican, duplikat "
+"direktorija unutar postojeceg?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globalna poruka) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Greška"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Višestruke pogreške su se dogodile. Kliknite U redu da pogledate bilješke o "
+"pogreškama."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Prekini torrent?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Jeste li donirali?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Dobro došli u novu verziju %s. Jeste li donirali?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Hvala!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Hvala na donaciji! Da donirate ponovno, odaberite \"Doniraj\" iz meni-a "
+"\"Pomoć\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Nisam mogao pokrenuti TorrentQueue, pogledaj gore za pogreske."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s stvaranje torrent-a %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Stvori torrent dokument za ovu datoteku/direktorij:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Odaberite..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Velčina dijela:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "_Koristi tragača:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Koristi D_HT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nodovi (opcija):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komentar:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Budi host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Skupljanje torrent-a..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Provjeravanje veličine datoteka..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Počni seed"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "sakupljanje"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Završeno."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Završeno sakupljanje torrent-a."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Greška!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Greška pri sakupljanju torrent-a:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dana"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dan %d sati"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d sati"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuta"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekundi"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekundi"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Pomoć"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Često postavljanja pitanja:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Započni"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Odaberi postojeći direktorij..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Sve datoteke"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrent-i"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Stvori novi direktorij..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Odaberi datoteku"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Odaberi direktorij"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Ne mogu učitati zadnju spremljenu promjenu:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Ne mogu spremiti UI promjene:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "ne mogu potpuno ucitati zadnju promjenu"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Neispravno ime (duplicirani upis)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Neispravna datoteka (krivi upis)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Krivi UI status datoteke"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Krivi UI status verzije datoteke"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "Nepodrzani UI status verzije datoteke (od novije verzije klijenta?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Ne mogu obrisati cache-anu %s datoteku"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "To nije ispravno ime za torrent. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Ovaj torrent ( ili ondaj sa istim sadrzajem ) je vec u koristenju."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Ovaj torrent ( ili onaj sa istim sadrzajem ) je vec stavljen na cekanje."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent u nepoznatom stanju %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Ne mogu zapisati datoteku"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"torrent nece biti pravilno ponovno pokrenut kada klijent restartira program"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nema torrenta"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normalan rad"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..fbd7d58
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,3134 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (translations) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-19 05:38-0800\n"
+"Last-Translator: Tamas Szanto <tszanto@interware.hu>\n"
+"Language-Team: Hungarian <bugs (at) bittorrent (dot) com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Telepíteni kell a Python %s vagy újabb változatát"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "elavult, kérjük ne használja"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "Nem sikerült kommunikálni egy másik %s folyamattal, pedig az fut."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Lehet, hogy az összes %s ablak bezárása megszünteti a hibát."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s már fut"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Nem sikerült kommunikálni egy másik %s folyamattal."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Telepíteni kell a PyGTK %s vagy újabb változatát"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "átrendezés: húzással"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "a menü előhívásához kattintson a jobb egérgombbal"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "analóg telefonvonal"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "ADSL/kábel, 128k-tól"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "ADSL/kábel, 256k-tól"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "ADSL, 768k-tól"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Torrent URL megadása"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Adja meg a megnyitni kívánt torrent URL-jét:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Max. feltöltési sebesség:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Az összes futó torrent ideiglenes leállítása"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "A letöltés folytatása"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Új %s-verzió jelent meg"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Megjelent a/az %s egy új változata.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Most ezt használja: %s, és az új verzió: %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"A legújabb változat mindig letölthető innen:\n"
+"%sról/ről."
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "_Letöltés később"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Le_töltés most"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Emlékeztetés később"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Névjegy: %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Béta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Verzió: %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Nem sikerült megnyitni: %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Adomány küldése"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Műveletnapló - %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "A napló mentése ide:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "a napló elmentve"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "a napló törölve"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Beállítások: %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Általános"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "A BitTorrent elindítása a Windows indulásakor"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimalizálás a rendszertálcába"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Az állapotjelző szövege mindig fekete\n"
+"(újraindítás szükséges)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Mentés"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Új letöltések mentési könyvtára:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Módosítás..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Rákérdezés minden új letöltés helyére"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Letöltés"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Új torrent indításakor:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Egy futó torrent leállítása, hogy legyen hely"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "Nem kell _leállítani más torrentet"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Rákérdezés mindig"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Megosztás"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"A befejezett torrentek maradjanak megosztva: amíg a megosztási arány eléri a"
+"(z) [_] százalékot, illetve [_] percig, amelyik előbb bekövetkezik."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Megosztás korlátlan ideig"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Az utolsó befejezett torrent maradjon megosztva: amíg a megosztási arány "
+"eléri a(z) [_] százalékot."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Hálózat"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Szabad port keresése:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Kezdőport: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Automatikus portleképezés engedélyezése"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "A követőnek jelentett IP-cím:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Csak akkor van hatása, ha egy helyi hálózaton\n"
+"van a gép a követővel)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"FIGYELEM: ha megváltoztatja ezeket a/az\n"
+" beállításokat, akkor lehet, hogy a/az %s nem fog megfelelően működni."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opció"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Érték"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Magasabb rendű"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Válassza ki az alapértelmezett letöltési könyvtárat"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Nem sikerült eltávolítani egy hivatkozást: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Fájlok itt: \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Soha"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Letöltés: soha"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normál"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Normál letöltés"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Első"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Letöltés előbb"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Fájlnév"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Hossz"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Letöltés"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "soha"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "első"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Partnerek - \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-cím"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Ügyfél"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Kapcsolat"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s le"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s fel"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB letöltve"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB feltöltve"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% kész"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s becsült letöltés a partnerektől"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Partnerazonosító"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Érdeklődő"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Akadozik"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Teljesen lelassult"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimista feltöltés"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "távoli"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "helyi"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "hibás partner"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d OK"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d rossz"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "kitiltva/letiltva"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "OK"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "\"%s\" jellemzői"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentnév:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(követő nélküli torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Bejelentési URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr "(1 fájl)"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr "(%d fájl)"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Teljes méret:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Darabok:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hasítóérték:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Helyi könyvtár:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Fájlnév:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "A könyvtár _megnyitása"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Fájllista m_utatása"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrentjellemzők"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Torrent eltávolítása"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "A torrent megszakítása"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", megosztva marad még eddig: %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", korlátlan ideig megosztva marad."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Kész, megosztási arány: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Kész, %s feltöltve"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Kész"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "A torrent _jellemzői"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Fájllista"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Partnerlista"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "A hely mó_dosítása"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "Megosztás _korlátlan ideig"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Új_raindítás"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Befejezés"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Eltávolítás"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Me_gszakítás"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Biztosan el szeretné távolítani ezt: \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "A megosztási arány ennél a torrentnél: %d%% "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "A feltöltés ebbe a torrentbe befejeződött : %s. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Eltávolítja ezt a torrentet?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Befejezve"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "húzza át a listába, ha szeretné megosztani"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Hiba"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "húzza át a listába, ha folytatni szeretné"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Várakozik"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Szünetel"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Fut"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Jelenleg fel: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Jelenleg le: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Előző fel: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Előző le: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Megosztási arány: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s partner, %s megosztás. Összesen a követőtől: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Szétosztott másolatok száma: %d, következő: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Darabok: összesen %d, %d kész, %d részleges, %d aktív (%d üres)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d hibás darab + %s az eldobott kérésekben"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% kész, %s van hátra"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Letöltési sebesség"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Feltöltési sebesség"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "-"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "A %s elindult"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Kilépés"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr "Be_zárás"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Torrentfájl megnyitása"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Torrent URL megny_itása"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Ú_j torrent készítése"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Szünet/Folytatás"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "A befejezett torrentek m_utatása/rejtése"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Az ablak méretének ki_igazítása"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Napló"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Beállítások"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Súgó"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Névjegy"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Adomány küldése"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fájl"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Né_zet"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Torrent keresése"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(leállt)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(többszörös)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Már folyik a/az %s telepítő letöltése"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Szeretne most új %s alkalmazást telepíteni?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"Ki szeretne most lépni a(z) %s alkalmazásból, hogy feltelepítse az új %s "
+"programváltozatot?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"A/az %s súgó itt érhető el:\n"
+"%s\n"
+"Meg szeretné nyitni az oldalt?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "A súgóként használható dokumentációs weblapra rá szeretne menni?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Egy befejezett torrent szerepel a listán. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "El szeretné távolítani?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "%d már befejezett torrent szerepel a listán. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "El szeretné távolítani az összeset?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "El szeretné távolítani az összes befejezett torrentet?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nincs befejezett torrent"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nincs eltávolítható, már befejezett torrent."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Torrent megnyitása:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "A mentési hely megváltoztatása "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Már van ilyen fájl!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" már van. Szeretne más fájlnevet választani?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Mentési hely: "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Már van egy ilyen könyvtár."
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" már van. Létre szeretne hozni egy ugyanilyen nevű könyvtárat a már "
+"létező könyvtáron belül?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globális üzenet): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s-hiba"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Több hiba is történt. Kattintson az OK gombra a hibanapló megtekintéséhez."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Le szeretné állítani a futó torrentet?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+"A következő lesz elindítva: \"%s\". Le szeretne állítani egy futó torrentet?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Küldött már adományt?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Üdvözöljük a %s új verziójában! Küldött már adományt?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Köszönjük!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Adományát köszönjük! Ha további adományt szeretne küldeni, használja az "
+"\"Adomány küldése\" menüpontot a \"Súgó\" menüben."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Nem sikerült elindítani a TorrentQueue-t, lásd a fenti hibaüzenetet."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrentfájlkészítő %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Torrentfájl létrehozása ehhez a fájlhoz vagy könyvtárhoz:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Tallózás..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Könyvtár esetén több fájlt tartalmazó torrent jön létre)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Darabméret:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Kö_vető használata:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "_DHT használata"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Csomópontok (opcionális):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Megjegyzések:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Elkészítés"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Gépnév"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Torrentek felépítése..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "A fájlméretek ellenőrzése..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "A publikáció megkezdése"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "felépítés "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Kész."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "A torrentek felépítése befejeződött."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Hiba!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Hiba történt a torrentek felépítésekor: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "A GTK %s vagy újabb változata szükséges"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d nap"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 nap %d óra"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d óra"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d perc"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d másodperc"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 másodperc"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Súgó - %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Gyakran feltett kérdések:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ugrás"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Válasszon ki egy könyvtárat..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Minden fájl"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrentek"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Új könyvtár létrehozása..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Fájlválasztás"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Könyvtárválasztás"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Nem sikerült betölteni az elmentett állapotot: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Nem sikerült elmenteni a kezelőfelület állapotát: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Érvénytelen tartalmú állapotleíró fájl"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Hiba történt a(z) \"%s\" fájl olvasásakor."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "nem lehet teljesen visszatölteni az állapotot"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Érvénytelen állapotfájl (ugyanaz a bejegyzés mégyegyszer)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+"Hibás adatok találhatók itt: \"%s\", a torrent visszaállítása nem "
+"folytatható."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(nem megfelelő hasítóérték)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Érvénytelen állapotfájl (hibás bejegyzés)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Érvénytelen felületleíró állapotfájl"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "A felület állapotleíró fájlja hibás verziójú"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Nem támogatott verziójú felületállapot-fájl (lehet, hogy egy újabb verziójú "
+"klienstől származik)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Nem törölhető a gyorsítótárból a %s fájl:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Ez a torrent-fájl nem érvényes. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Ez a torrent (vagy egy másik, de ugyanezzel a tartalommal) már fut."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Ez a torrent (vagy egy másik, de ugyanezzel a tartalommal) már elő van "
+"készítve a futtatáshoz."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "A torrent állapota ismeretlen: %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Nem sikerült írni egy fájlba "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "a torrent nem fog tudni újraindulni az ügyfél következő indításakor"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Egyszerre legfeljebb %d torrent futhat. Részletesebb információ a FAQ-ban "
+"található, itt: %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"A torrent nem lesz elindítva, mert más torrentek várnak elindításra, és ez a "
+"torrent már teljesítette a megosztásleállítási feltételeket."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"A torrent nem lesz elindítva, mert már teljesítette az utolsó torrent "
+"megosztásleállítási feltételeit."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "A/az %s legújabb verziója nem volt megszerezhető."
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+"A/az %sból származó füzér új változatán nem tudott szintaxiselemzést végezni."
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "A/az %s es a %s elmentésére nem talált megfelelő ideiglenes helyet."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "A/az %s %s betelepítő számára nincs torrentfájl."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "A(z) %s %s telepítő nem teljes, hiányos vagy hibás."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Ezen a rendszeren nem használható a telepítő"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nincs torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "A letöltés megkezdése"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normálisan működik"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+"A letöltés lassú lehet:\n"
+"Valószínűleg tűzfal vagy NAT aktív a kapcsolaton"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Ellenőrizze a hálózati kapcsolatot"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+"ebben a könyvtárban lesznek tárolva az olyan gyakran változó adatok, mint a "
+"gyorsfolytatási adatok és a felület állapota. Alapértelmezésű a bittorrent "
+"konfigurációs könyvtárának 'data' nevű alkönyvtára."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"a helyi fájlrendszer kódolása. Ha üresen marad, a program megpróbálja "
+"automatikusan felismerni, de ez nem működik 2.3-nál régebbi verziójú "
+"Pythonnal."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "A használandó ISO nyelvkód"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+"a követő felé jelzett IP-cím (csak akkor van hatása, ha ugyanazon a helyi "
+"hálózaton van a követővel)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+"kívülről látható portszám, ha eltér attól, amit az ügyfél helyileg figyel"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"a legkisebb figyelt port, ettől felfelé keres a program, ha ez nem elérhető"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "a legnagyobb figyelt port"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "helyi IP-cím"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "a kiírt információk frissítési időköze (másodperc)"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "további partnerek lekérdezéséig eltelt idő (percben)"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "a partnerek minimális száma az újralekérdezés elkerüléséhez"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "a partnerek száma új kapcsolat létesítésének leállításához"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "a kimenő, nem teljes kapcsolatok max. száma"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+"a kapcsolatok maximális száma, ennek elérése után minden új bejövő kapcsolat "
+"azonnal le lesz zárva"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "ellenőrizni kell-e a hasítóértékeket a lemezen"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximális feltöltési sebesség (kB/s), 0 esetén nincs korlát"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "az optimista akadozásmentesítéssel kitöltendő feltöltések száma"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"egyszerre legfeljebb ennyi fájl lehet megnyitva egy többfájlos torrentben, 0 "
+"esetén nincs korlát. A szabad fájlleírók elfogyását gátolja meg."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+"Követő nélküli ügyfél inicializálása. Ezt engedélyezni kell, ha követő "
+"nélküli torrenteket szeretne letölteni."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "keepalive-üzenetek küldési időköze (másodperc)"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "hány bájt legyen lekérve egy kérésben."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+"a hálózati előtagkódolás maximális hossza - ennél nagyobb hossz esetén a "
+"program bontja a kapcsolatot."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"várakozási idő az üresjáratban működő, adatot nem fogadó aljazatok "
+"lezárásához (másodperc)"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"ekkora időközönként ellenőrzi a program a kapcsolatok lejárását (másodperc)"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+"a partnereknek küldött szeletek maximális hossza, a program zárja a "
+"kapcsolatot ennél nagyobb kérés esetén"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+"a jelenlegi feltöltési és letöltési sebesség megbecsléséhez használt "
+"időtartam maximuma"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"a jelenlegi megosztási sebesség megbecsléséhez használt időtartam maximuma"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "hibás bejelentés ismétlése esetén a maximális várakozási idő"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+"ha egy kapcsolaton ennyi ideig (másodperc) nem jön adat, a program azt "
+"akadozónak fogja megjelölni"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"ekkora letöltési szám fölött tér át a program véletlenszerű "
+"sorrendkezelésről a prioritásosra"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "egyszerre ennyi bájt írható a hálózati pufferekbe."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+"a kapcsolat megtagadása olyan agresszív partner esetén, amely hibás vagy "
+"szándékosan elrontott adatokat küld"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+"nem kell több olyan további partnerhez csatlakozni, amelynek ugyanaz az IP-"
+"címe"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"ha nem nulla, a partnerkapcsolatok TOS opciójának értéke erre lesz beállítva"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"hibajavítás aktiválása egy ismert BSD libc hibára, amely nagyon lassú "
+"fájlolvasást eredményezhet."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "a keresőkapcsolatokhoz használt HTTP proxy cím"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+"a kapcsolatok zárása RST-vel történjen, a TIME_WAIT nevű TCP-állapot "
+"elkerülése"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"A Twisted hálózati programkönyvtárak használata a hálózati kapcsolatokhoz. 1 "
+"azt jelenti, hogy twistedet használ, 0 pedig azt, hogy nem használ twistedet "
+"- esetén bekapcsolva, 0 esetén kikapcsolva, -1 esetén automatikus detektálás "
+"lesz és jobb a twisted használata"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"fájlnév (egy fájlt tartalmazó torrent esetén) vagy könyvtárnév (több fájlt "
+"tartalmazó torrent esetén) a torrent mentéséhez, felülbírálva a torrentben "
+"megadott alapértelmezett nevet. Lásd még a --save_in paramétert, ha egyik "
+"sincs megadva, akkor a program bekéri a mentési helyet"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "szakértőknek szánt, kibővített felhasználói felület megjelenítése"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+"befejezett torrent esetén a megosztás max. ennyi ideig folytatódjon (perc)"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+"a megosztás leállításához szükséges minimális feltöltési/letöltési arány "
+"(százalékban). 0 esetén nincs korlátozás."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+"az utolsó megosztás leállításához szükséges minimális feltöltési/letöltési "
+"arány (százalékban). 0 esetén nincs korlátozás."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Minden befejezett torrent megosztását korlátlan ideig kell folytatni (amíg a "
+"felhasználó be nem zárja)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Az utolsó torrent megosztását korlátlan ideig kell folytatni (amíg a "
+"felhasználó be nem zárja)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "a letöltő szünetelt állapotban induljon"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+"azt határozza meg, mi történjen, ha a felhasználó új torrentet indít kézzel. "
+"\"replace\" esetén az utoljára elindított torrent leáll az új megkezdése "
+"előtt, \"add\" esetén az új torrent a meglevőkkel párhuzamosan fog futni, "
+"\"ask\" esetén a program mindig megkérdezi, mi történjen."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "A BitTorrent minimalizálva induljon el"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+"a HTTP-s verzióellenőrzéstől kapott érték felülbírálása, a verzióellenőrzés "
+"átváltása nyomkövető módba"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+"a verzióellenőrzéstől kapott érték felülbírálása, a verzióellenőrzés "
+"átváltása nyomkövető módba"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"az ablakméret és -pozíció megadása, a várt formátum: SZÉLESSÉGxMAGASSÁG"
+"+XPOZÍCIÓ+YPOZÍCIÓ"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+"a torrent mentéséhez használt fájlnév (egy fájlt tartalmazó torrent esetén) "
+"vagy könyvtárnév (több fájlt tartalmazó torrent esetén), felülbírálja a "
+"torrentben megadott alapértelmezett nevet. Lásd még: --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+"egyszerre legfeljebb ennyi feltöltés engedélyezett: -1 esetén egy "
+"automatikusan meghatározott érték lesz a --max_upload_rate érték alapján. Az "
+"automatikusan meghatározott érték csak akkor megfelelő, ha egyszerre csak "
+"egy torrent aktív."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+"a torrent tartalma ebbe a helyi könyvtárba lesz lementve. A tároló fájl (egy "
+"fájlt tartalmazó torrent esetén) vagy könyvtár (több fájlt tartalmazó "
+"torrent esetén) ebben a könyvtárban lesz létrehozva a torrentfájlban "
+"megadott alapértelmezett névvel. Lásd még a --save_as paramétert."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "a program megkérdezze-e, hová kell lementeni a letöltött fájlokat"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+"a torrentek tartalma ebbe a helyi könyvtárba fog kerülni, a --saveas_style "
+"opcióval megadott néven. Ha ez üresen marad, akkor a megfelelő torrentfájl "
+"könyvtárába történik a mentés."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "a torrentkönyvtár átvizsgálási időköze (másodperc)"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+"ennyi másodpercig kell várni a torrent felismerésétől az elindításáig, hogy "
+"ne legyen verseny a követővel"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+"A torrentletöltések elnevezési módja. 1: a torrentfájl neve a .torrent "
+"kiterjesztés nélkül. 2: a torrentfájlban kódolással megadott név. 3: a "
+"torrentfájl nevével megegyező alkönyvtárba (a .torrent kiterjesztés nélkül), "
+"hozzáfűzve a torrentfájlban megadott nevet. 4: ha a torrentfájl neve (a ."
+"torrent kiterjesztés nélkül) és a torrentfájlban megadott név megegyezik, "
+"akkor az a név lesz használva, máskülönben alkönyvtár lesz létrehozva a 3. "
+"eljárás szerint. FIGYELEM: az 1. és 2. módszer esetén visszajelzés nélkül "
+"felülíródhatnak fájlok és biztonsági problémák adódhatnak."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"a teljes elérési út vagy a torrent tartalma megjelenjen-e minden torrentnél"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "a torrentfájlok keresési könyvtára (félig rekurzív)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "a program kiírjon-e diagnosztikai üzeneteket a standard kimenetre"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "2 melyik hatványa legyen a darabméret"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "alapértelmezett követőnév"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+"ha az érték hamis, akkor követő nélküli torrent lesz (bejelentési URL "
+"nélkül). Ebben az esetben megbízható hálózati csomópont adható meg <IP-cím>:"
+"<port> alakban - üres sztring esetén a program a routing táblából veszi a "
+"csomópont értékét"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "a letöltés befejeződött!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<ismeretlen>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "hátralevő idő: %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "a letöltés sikerült"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB fel / %.1f MB le)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB fel / %.1f MB le)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d látható most, továbbá %d szétosztott másolat (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d szétosztott másolat (következő: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d látható most"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "HIBA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "mentés:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "fájlméret:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "befejezettség százalékban: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "hátralevő idő: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "letöltés ide: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "letöltési sebesség: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "feltöltési sebesség: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "megosztási sebesség: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "publikálási állapot: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peer-állapot: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "A --save_as és a --save_in paraméter nem használható együtt"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "lezárás"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Hiba történt a beállítások beolvasásakor: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Hiba történt a torrentfájl olvasásakor: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "meg kell adni egy torrentfájlt"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"A karakteres módú felület inicializálása nem sikerült, nem lehet továbblépni."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+"E letöltőfelület működéséhez szükséges a \"curses\" nevű standard Python-"
+"modul, amely sajnos nem része a Python standard Windows-os változatának. A "
+"Python Cygwin-es változata azonban tartalmazza (ez a változat futtatható "
+"minden Win32-alapú rendszeren, lásd www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "A bittorrent-iranyito kozpont tovabbra is hasznalhato letoltesre."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fájl:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "méret:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "cél:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "előrehaladás:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "állapot:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "letöltési sebesség:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "feltöltési sebesség:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "megosztás:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "publikációk:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "partnerek:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d látható most, továbbá %d szétosztott másolat (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "hibák:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "hiba:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP-cím Feltöltés Letöltés Befejezve Sebesség"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "%d darab letöltése folyik, %d töredék, %d / %d darab kész"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "A következő hibák történtek a végrehajtás alatt:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Használat: %s KÖVETŐ_URL [TORRENTFÁJL [TORRENTFÁJL ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "régi bejelentés - %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "nincs torrent"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "RENDSZERHIBA - KIVÉTEL TÖRTÉNT"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Figyelem: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " nem könyvtár"
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+"hiba: %s\n"
+"ha argumentum nélkül indítja a programot, megjelenik a paraméterek "
+"magyarázata"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+"\n"
+"KIVÉTEL:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "A \"btdownloadheadless.py\" használható letöltéshez."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "csatlakozás a partnerekhez"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Várható befejezés: %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Méret"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Feltöltés"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Összesen:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s partner %s feltöltő partner %s osztott másolat - %s le %s fel"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "hiba: "
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+"\n"
+"ha argumentum nélkül indítja a programot, megjelenik a paraméterek "
+"magyarázata"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "opcionális megjegyzés a torrentfájlokba"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "opcionális célfájl a torrenthez"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - %s metainformációs fájl dekódolása"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Használat: %s [TORRENTFÁJL [TORRENTFÁJL ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainformációs fájl: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "hasítóérték: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "fájlnév: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "fájlméret:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "fájlok:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "könyvtárnév: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "archívumméret:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "követőbejelentési URL: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "követő nélküli csomópontok:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "megjegyzés:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "H"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "K"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Sze"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Cs"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "P"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Szo"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "V"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "jan."
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "febr."
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "márc."
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "ápr."
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "máj."
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "jún."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "júl."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "aug."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "szept."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "okt."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "nov."
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "dec."
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Tömörített: %i, nem tömörített: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Nem sikerült elmenteni a beállításokat: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Hiba történt a beállítófájl beolvasásakor. A régi beállítófájl helye: \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Hibás beállítóopció: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Ki kell lépni a(z) %s programból és újra kell telepíteni. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Nem található a(z) \"%s\" nyelvű fordítás\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "A(z) %s fájl egy másik aktív torrenthez tartozik"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Már létezik %s nevű fájl, de nem közönséges fájl, hanem valami más"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Túl rövid olvasás - valami levágta a fájlok végét?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Nem támogatott gyorsfolytatási fájlformátum, lehet, hogy más verziójú "
+"klienstől származik"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+"Úgy tűnik, hogy egy másik program elmozgatta, átnevezte vagy törölte a "
+"fájlt, vagy %s lefagyott a legutóbbi futtatáskor."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+"Úgy tűnik, hogy egy másik program megváltoztatta a fájlt, vagy %s lefagyott "
+"a legutóbbi futtatáskor."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+"Úgy tűnik, hogy egy másik program megváltoztatta a fájl méretét, vagy %s "
+"lefagyott a legutóbbi futtatáskor."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "nem sikerült beolvasni a gyors folytatáshoz szükséges adatokat: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "a kapcsolatot elutasították"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Azt kérte, hogy kapcsolódáskor az újbóli felhasználás ki legyen kapcsolva, "
+"de ez nem lehetséges."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"Minden reaktornál csak egyszer hívható meg a listen_forever() függvény."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+"Előfordulhat, hogy a listen_once() függvény nem tér vissza, amíg nincs "
+"aktivitás, és ezért nem dolgozza fel a kért eseményt. Helyette a "
+"listen_forever() függvény használható."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "hibás adat a válaszfájlban - túl kicsi az összesített érték"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "hibás adat a válaszfájlban - túl nagy az összesített érték"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "létező fájl ellenőrzése"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 vagy a gyorsfolytatási adatok nem felelnek meg a fájl "
+"állapotának (hiányzó adatok vannak)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Hibás gyorsfolytatási adatok (a fájlok több adatot tartalmaznak)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Hibás gyorsfolytatási adatok (nem megengedett érték fordult elő)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "hibás adatok a lemezen - lehet, hogy két programpéldány fut?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"indításkor egy befejezettnek jelölt fájlban hibás volt egy hasítási érték"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Nem sikerült beállítani szignálkezelőt: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "eldobva: \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "hozzáadva: \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "várakozás a hasítóértékek ellenőrzésére"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "letöltés"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "A konfigurációs fájl újraolvasása"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+"A torrentfájl neve nem adható meg, ha egyszerre több torrent generálása "
+"történik"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Ez a programverzió nem támogatja a(z) \"%s\" fájlrendszer-kódolást."
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+"Nem sikerült átkonvertálni a(z) \"%s\" fájl- vagy könyvtárnevet UTF-8 "
+"kódolásra (%s). Vagy hibás a feltételezett fájlrendszer-kódolás (\"%s\") "
+"vagy nem megengedett bájtokat tartalmaz a sztring."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+"A(z) \"%s\" fájl- vagy könyvtárnév olyan speciális Unicode-karaktereket "
+"tartalmaz, melyek nem valódi karaktert reprezentálnak."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Nem sikerült olvasni ebből a könyvtárból "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Egy stat művelet nem sikerült "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "%s eltávolítása (újból hozzá lesz adva)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**figyelem**: %s egy duplikált torrent (az eredeti: %s)"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**figyelem**: %s hibákat tartalmaz"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... sikerült"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "%s eltávolítása"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "az ellenőrzés befejeződött"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Egy stat művelet nem sikerült %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+"Nem sikerült letölteni vagy megnyitni: \n"
+"%s\n"
+"Próbálja meg webböngészővel letölteni a torrentfájlt."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "A Python %s vagy újabb változata szükséges"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Nem lehet RawServer motort cserélni, mert %s már ki lett választva. "
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"A követő bejelentése még mindig nem fejeződött be, pedig már %d másodperc "
+"eltelt az indítás óta"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Nem sikerült csatlakozni a követőhöz, a gethostbyname függvényhívás nem "
+"sikerült - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Hiba történt a követőhöz való kapcsolódáskor - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "hibás adatok érkeztek a követőtől - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "a követő elutasította - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+"A torrent megszakadt, mert a követő elutasította, és egy partnerrel sem volt "
+"kapcsolatban. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Üzenet a követőtől: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "figyelmeztetés a követőtől - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Egy követő nélküli lekérdezés nem sikerült: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "hibás metainformáció - nem könyvtár"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "hibás metainformáció - hibás darabkulcs"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "hibás metainformáció - érvénytelen darabhossz"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "hibás metainformáció - hibás név"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "a(z) %s név nem engedélyezett biztonsági okokból"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "kevert egyszeres/többszörös fájlok"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "hibás metainformáció - hibás hossz"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "hibás metainformáció - \"files\" nem egy fájllista"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "hibás metainformáció - a fájlbejegyzésnek könyvtárnak kell lennie"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "hibás metainformáció - hibás elérési út"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "hibás metainformáció - hibás könyvtár"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "a(z) %s elérési út biztonsági okok miatt nem engedélyezett"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "hibás metainformáció - duplikált elérési út"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"hibás metainformáció - egy név fájlnévként és alkönyvtárnévként is szerepel"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "hibás metainformáció - hibás objektumtípus"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "hibás metainformáció - hiányzik a bejelentési URL sztringje"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "hibás metainformáció - a csomópont nem lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "hibás metainformáció - a csomópontlistának csak két eleme lehet"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "hibás metainformáció - a csomópont gépnevének sztringnek kell lennie"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "hibás metainformáció - a csomópont portjának egész számnak kell lennie"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "a hiba okának sztringnek kell lennie"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "a figyelmeztető üzenetnek sztringnek kell lennie"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"érvénytelen bejegyzés a partnerlistában - a partnerinformációnak könyvtárnak "
+"kell lennie"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"érvénytelen bejegyzés a partnerlistában - a partner IP-címének sztringnek "
+"kell lennie"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"érvénytelen bejegyzés a partnerlistában - a partner portjának egész számnak "
+"kell lennie"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "érvénytelen bejegyzés a partnerlistában - érvénytelen partnerazonosító"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "érvénytelen partnerlista"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "érvénytelen bejelentési időköz"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "érvénytelen minimális bejelentési időköz"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "érvénytelen követőazonosító"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "érvénytelen partnerszám"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "érvénytelen publikációszám"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "érvénytelen \"utolsó\" bejegyzés"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Használat: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+"[OPCIÓK] [TORRENTKÖNYTÁR]\n"
+"\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+"Ha opció nélküli érték van megadva, akkor azt a program a\n"
+"torrent_dir opció értékének veszi.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPCIÓK] [TORRENTFÁJLOK]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPCIÓK] [TORRENTFÁJL]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPCIÓ] KÖVETŐ_URL FÁJL [FÁJL]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "az argumentumok -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (alapértelmezés: "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "ismeretlen kulcs "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "az átadott paraméterhez nincs megadva érték"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "a parancssor feldolgozásában hiba történt itt: "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "A(z) %s opciót kötelező megadni."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Legalább %d argumentumot meg kell adni."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Tul sok parameter - maximalisan %d megengedett."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "hibás formátum: %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "A figyelt port."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "a legutóbbi letöltések adatainak elmentése ebbe a fájlba"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "várakozási idő kapcsolat zárása előtt"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "a dfájl mentési időköze (másodperc)"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "a letöltők lejárása közötti időköz (másodperc)"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+"ennyi időt kell várniuk a letöltőknek a bejelentések között (másodperc)"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+"az információs üzeneteket alapértelmezés szerint ennyi partnernek kell "
+"elküldeni, ha a kliens nem adja meg az értéket"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "várakozási időköz a kapcsolatok lejárásának ellenőrzéséhez"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"ennyiszer kell ellenőrizni, hogy a letöltő NAT mögött található-e (0 = nem "
+"kell ellenőrizni)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "bekerüljön-e a NAT-ellenőrzés eredménye a naplóba"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "legalább ennyi időnek kell eltelnie két kiürítés között"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"legalább ennyi időnek kell eltelnie (másodpercben), hogy egy gyorsítótárat "
+"elavultnak vegyen a program és kiürítse"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+"csak ebbe a könyvtárba lehet torrenteket letölteni (és rekurzívan azokba az "
+"alkönyvtárakba, amelyek nem tartalmaznak torrentfájlokat). Ha be van "
+"állítva, az ebben a könyvtárban található torrentek megjelennek az "
+"információs/scrape lapokon, függetlenül attól, vannak-e partnereik"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"az allowed_dir-ben levő torrentek speciális kulcsainak engedélyezése a "
+"keresők elérésnek beállításához"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "újra meg kell-e nyitni a naplófájlt HUP szignál fogadása esetén"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"kell-e információs lapot megjeleníteni a követő gyökérkönyvtárának "
+"betöltésekor"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "az információs lap átirányítási URL-je"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "megjelenjenek-e a nevek az engedélyezett könyvtárból"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"ezt az x-icon típusú fájlt kell visszaadni, ha a böngésző lekérdezi a "
+"favicon.ico-t"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"Az IP GET paramétert figyelmen kívül kell hagyni olyan gépeknél, amelyek nem "
+"a helyi hálózaton vannak találhatók (0 = soha, 1 = mindig, 2 = ha a NAT-"
+"ellenőrzés ki van kapcsolva). Az olyan HTTP proxy fejléceket, amelyek az "
+"eredeti kliens IP-címét tartalmazzák, ugyanúgy kezeli a program, mint az --"
+"ip -t."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"ebbe a fájlba kell írni a követő naplóüzeneteit, '-' esetén a standard "
+"kimenet lesz (ez az alapértelmezés)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+"az allowed_dir paraméterrel együtt használható; megad egy olyan /fájl?hash="
+"{hasítóérték} URL-t, amely lehetővé teszi a felhasználóknak a torrentfájl "
+"letöltését"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"a már nem aktív torrentek megőrzése lejárás után is (hogy továbbra is "
+"megjelenjenek a /scrape- és weboldalon). Csak akkor van jelentősége, ha az "
+"allowed_dir paraméter nincs megadva."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "engedélyezett scrape-elérés (none, specific vagy full lehet)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "a kérést adható partnerek max. száma"
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+"lehet, hogy a fájl létezik egy messzi-messzi galaxisban,\n"
+"de itt sajnos nincs\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**figyelem**: a megadott -- %s -- favikon-fájl nem létezik."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**figyelem**: a(z) %s állapotfájl megsérült, alapállapotba lesz hozva"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# A napló elkezdve: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**figyelem**: a standard kimenetet nem sikerült átirányítani a naplófájlba: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Napló újból megnyitva: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**figyelem**: a naplófájlt nem sikerült újból megnyitni"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "a specific scrape függvény nem érhető el ennél a követőnél."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "a teljes scrape függvény nem érhető el ennél a követőnél."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "a get függvény nem érhető el ennél a követőnél."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "A kért letöltéshez nincs jogosultság ezen a követőn."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "argumentumok nélkül indítva lehet leírást kérni a paraméterekről"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Lezárás: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Nem indítható két külön példány ugyanazzal a torrenttel"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "%s elrejtése"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "%s megjelenítése"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "érvénytelen bináris kódolású sztring"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+"érvénytelen bináris kódolású érték (adat áll az utolsó érvényes utótag után)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "a maxport érték kisebb a minportnál, nincs használható port"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Nem sikerült megnyitni egy figyelési portot: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Nem sikerült megnyitni egy figyelési portot: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Ellenőrizze a megadott porttartományt."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Kezdeti indulás"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Nem sikerült betölteni a folytatási adatokat: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Teljes ellenőrzés lesz végrehajtva a hasítóértékeken."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "a(z) %d. darab hasítóértéke hibás, újbóli letöltés"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Követő nélküli torrentet próbált letölteni a követő nélküli kliens "
+"kikapcsolása mellett."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "a letöltés nem sikerült: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO-hiba: nem maradt szabad hely a lemezen, vagy nem sikerült ilyen nagy "
+"fájlt létrehozni:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "kilépés IO-hiba miatt: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "kilépés OS-hiba miatt: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "kilépés belső kivétel fellépése miatt: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "További hiba történt egy másik hiba miatti lezáráskor: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Nem sikerült eltávolítani egy hiba után a gyorsfolytatási adatokat:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "publikálás"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Nem sikerült kiírni a gyorsfolytatási adatokat: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "lezárás"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Valószínűleg egy régi Python-verzió van telepítve, mely nem támogatja a "
+"fájlrendszer kódolásának lekérdezését. Az 'ascii' kódolás lesz érvényes."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"A Python nem tudta lekérdezni a fájlrendszer kódolását. Az 'ascii' kódolás "
+"lesz érvényes."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"A program nem támogatja a(z) '%s' fájlrendszer-kódolást. Az 'ascii' kódolás "
+"lesz érvényes."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Hibás komponens az elérési útban: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+"Ez a torrentfájl hibás eszközzel lett létrehozva, hibás kódolású fájlneveket "
+"tartalmaz. A fájlnevek másként fognak megjelenni, mint ahogy azt a "
+"torrentfájl készítője akarta."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+"Ez a torrentfájl hibás eszközzel lett létrehozva, olyan hibás "
+"karakterértékeket tartalmaz, amelyek nem felelnek meg valódi karakternek. "
+"Egyes fájlnevek másként fognak megjelenni, mint ahogy azt a torrentfájl "
+"készítője akarta."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+"Ez a torrentfájl hibás eszközzel lett létrehozva, hibás kódolású fájlneveket "
+"tartalmaz. Ennek ellenére előfordulhat, hogy a nevek nem tartalmaznak hibát."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+"A helyi fájlrendszer kódolása (\"%s\") nem tudja az ebben a torrentfájlban "
+"található összes fájlnevet helyesen kezelni. A fájlnevek megváltoztak az "
+"eredetihez képest."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+"A torrent fájlneveiben olyan karakterek szerepelnek, amelyeket a Windows "
+"fájlrendszere nem engedélyez. Ezért a program megváltoztatta ezeket a "
+"fájlneveket."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+"Ez a torrentfájl hibás eszközzel lett létrehozva, legalább egy fájl- vagy "
+"könyvtárnév hibás benne. Azonban ezek a fájlok mind 0 hosszúságúnak vannak "
+"jelölve, ezért ezt a hibát figyelmen kívül tudja hagyni a program."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Nem kezelt parancs: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Nem sikerült létrehozni egy vezérlőaljazatot: már foglalt"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Nem sikerült eltávolítani egy régi vezérlőaljazat-fájlnevet:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Nem sikerült létrehozni egy vezérlőaljazatot: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Nem sikerült elküldeni ezt a parancsot: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "A globális mutex már létre lett hozva."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Nem sikerült nyitott portot találni."
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Nem sikerült létrehozni az alkalmazás adatkönyvtárát."
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Nem sikerült megkapni a globális mutex zárolást a controlsocket fájlhoz."
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"A BitTorrent előző példánya nem lett megfelelően megszüntetve. Folytatás."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "A BT egy másik példánya már fut, de \"%s\" nem létezik.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Megpróbálom meghatározni a portot."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Felismert port: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Nem található port."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC állapot: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE-alapú kommunikáció kezdődött."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+"nem sikerült deregisztrálni vagy bezárni egy kiszolgálón levő aljazatot: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "elveszett a kiszolgáló aljazata"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Hiba történt az elfogadott kapcsolatok kezelésében: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Ki kellett lépni a TCP-verem hibája miatt. Olvassa el a FAQ-ot itt: %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "ismeretlen típusú üzenet érkezett"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "időtúllépési hiba"
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr "aljazathiba"
diff --git a/po/hy.po b/po/hy.po
new file mode 100644
index 0000000..a0cb651
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,2880 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-18 01:58-0700\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "քաշելով վերադասավորեք"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "աջ կոճակը մենյուի համար"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "հեռախոսային"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/լարային 128k վեր"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/լարային 256k վեր"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k վեր"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Գրեք հոսքի URL հասցեն"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Գրեք բացվելիք ֆայլի հոսքի URL հասցեն"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Ժամանակավորապես կանգնեցնել բոլոր հոսքերը"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Շարունակել ստացումը"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "%s-ի նոր տարբերակ կա"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "%s-ի նոր տարբերակ կա:\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Դուք օգտագործում եք %s, իսկ նոր տարբերակը %sն է:\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Դուք միշտ կարող եք ամենավերջինտարբերակը ստանալ հետևյալ տեղից \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Ստանալ _հետո"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Ստանալ _անմիջապես"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Հ_իշեցնել"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "%sի վերաբերյալ"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Փորձնական"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Տարբերակ %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Գումար ներդնել"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Հիշել գրանցումը այստեղ՝"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "գրանցումը պահված է"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "գրանցումը մաքրված է"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Պահում եմ"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Հիշել ստանալիք ֆայլերը այստեղ՝"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Փոփոխել..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Ամեն նոր ֆայլ ստանալիս հարցնել, թե ուր պահել"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Ստանում եմ"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Ցանց"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Դատարկ պորտ փնտրի"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "սկսենք այս պորտից՝"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"ՈՒշադրություն. սա փոխելը կարող է\n"
+"խանգարել %sի ճիշտ աշխատանքին:"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Առժեք"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Ընտրել, թե ուր հիշել ստացվող ֆայլերը"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Ֆայլի անուն"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Երկարություն"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP հասցե"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Միացում"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/վ վար"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/վ վեր"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB ստացված"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB ուղարկված"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% կատարված"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Հետաքրքրված"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "արգելափակված"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Հոսքի անունը՝"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Ընդհանուր չափը՝"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Մասերը՝"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Պահել այստեղ՝"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Ֆայլի անուն՝"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Հոսքի մասին"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Ոչնչացնել հոսքը"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Դադարեցնել հոսքը"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Համոզվա՞ծ ես, որ ուզում ես ջնջել \"%s\"ը"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Ավարտված"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Սպասում եմ"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Հետաձգած"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Աշխատում եմ"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Ցուցադրել/թաքցնել _ավարտված հոսքերը"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Շնորհակալություն:"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Սխա՜լ"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d օր"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 օր %d ժամ"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d վայրկյան"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 վայրկյան"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Հաճախ տրվող հարցեր"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Բոլոր ֆայլերը"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Ընտրեք ֆայլը"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Նորմալ աշխատանք"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Չկարողացա հիշել պարամետրերը՝"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "%sը պարտադիր է"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Ամենաքիչը %d արգումենտ է անհրաժեշտ"
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Ավելորդ արգումենտներ. ամենաշատը՝ %d"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "խաթարված է գրելու/կարդալու սխալի պատճառով՝"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "խաթարված է օպերացիոն համակարգի սխալի պատճառով"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "անջատել"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Չկարողացա ուղարկել հրամանը՝"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/is.po b/po/is.po
new file mode 100644
index 0000000..efb9cbd
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,3096 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+# Base translation by Birkir A. Barkarson <birkirb (at) stoicviking (dot) net>
+# Original translation by Birkir A. Barkarson <birkirb (at) stoicviking (dot) net>
+# Base translation by Birkir A. Barkarson <birkirb (at) stoicviking (dot) net>
+# Original translation by Birkir A. Barkarson <birkirb (at) stoicviking (dot) net>
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-27 11:00-0800\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Setjið upp Python %s eða nýrri"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "úrelt, forðist notkun"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Samskipti við aðra %s vinnslu mistókst en vinnslan virðist vera í gangi"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Lokið öllum %s gluggum, það gæti lagað vandamálið"
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s er þegar í gangi"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Samskipti við aðra %s vinnslu mistókst."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s eða nýrri útgáfa er nauðsynleg"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "dragið til að endurraða"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "hægri-smellur birtir valmynd"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "upphringiaðgangur"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kapall 128k upphal"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kapall 256k upphal"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k upphal"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Sláði inn URL flaums"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Sláið inn URL flaum skráar sem skal opna:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Hámarks upphal:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Stöðva alla flauma tímabundið"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Endurhefja niðurhal"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Ný %s útgáfa fáanleg"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Nýrri útgáfa %s er fáanleg.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Þú ert að nota %s, nýja útgáfan er %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Þú getur ávallt sótt nýjustu útgáfuna frá \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Sækja_seinna"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Sækja_núna"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Áminning seinna"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Um %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Útgáfa %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Gat ekki opnað %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Framlag"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s hreyfinga kladdi"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Vista kladda í:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Kladdi vistaður"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Kladdi tæmdur"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s stillingar"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Almennt"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Keyra BitTorrent þegar Windows ræsir"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Sýna í kerfisbakka við minnkun"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Texti í framvindusúlu er ávallt svartur\n"
+"(krefst endurræsingar)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Vistun"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Vista niðurhal í:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Breyta..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Ávallt spyrja hvar skal vista niðurhal"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Niðurhal"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Þegar nýr flaumur er ræstur skal:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "Gera pláss með því að_stöðva aðra flauma"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Ekki stöðva aðra flauma"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Spurja í hvert sinn"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Sáning"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Sá skal fullsóttum flaumum: þar til skipti hlutfall nær [_] prósentum, eða í "
+"[_] mínútur, hvort er fyrri til verður."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Sá um óákveðin tíma"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Sá skal fullsóttum flaumum: þar til skipti hlutfall nær [_] prósentum."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Net"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Leit að fáanlegu porti:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "byrjar á porti: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Virkjaði sjálfvirka úthlutun porta"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP tala tilkynnt til flaumþjóns:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Hefur engin áhrif nema þú sért á sama\n"
+"neti og flaumþjónninn)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"VIÐVÖRUN: Breytingar á þessum stillingum\n"
+"getur komið í veg fyrir að %s starfi eðlilega."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Valkostir"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Gildi"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Ítarlegt"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Veldu sjálfgefið skráarsafn fyrir niðurhal"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Gat ekki fjarlægt flýtivísi: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Skrár í \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Aldrei"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Aldrei hala niður"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Venjulegt"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Hala niður venjulega"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Fyrst"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Hala niður fyrsta"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Skráarnafn"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lengd"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Niðurhal"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "aldrei"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "fyrst"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Skiptifélagar fyrir \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP tala"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Biðill"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Tenging"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s í niðurhal"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s í upphal"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB halað niður"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB halað upp"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% lokið"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s niðurhal skiptifélaga"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Einkenni skiptifélaga"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Áhugasamir"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Stíflaðir"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Hunsaðir"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Bjartsýnis upphal"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "fjarlægur"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "nærlægur"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "óvirkur skiptifélagi"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d í lagi"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d óvirkir"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "bannaður"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "í lagi"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Upplýsingar um \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nafn flaums:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(þjónlaus flaumur)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Tilkynningar URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", í einni skrá"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", í %d skrám"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Heildar stærð:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Hlutar:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Upplýsinga tætla:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Vista í:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Skráarnafn:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Opna skráarsafn:"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Sýna skráar _lista"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Upplýsingar um flaum"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Fjarlægja flaum"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Stöðva flaum"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", mun sæða í %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", mun sæða í óákveðin tíma."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Lokið, skiptihlutfall: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Lokið, %s halað upp"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Lokið"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Upplýsingar um flaum"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Skráar listi"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Skipti_félaga listi"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Breyta staðsetningu"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "Sæða um óákveðin _tíma"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_Endurræsa"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Ljúka"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Fjarlægja"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Hætta við"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Ertu viss um að þú viljir fjarlægja \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Skiptihlutfall fyrir þennan flaum er %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Þú hefur halað upp %s í þennan flaum. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Fjarlægja þennan flaum?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Lokið"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "dragið á listann til að sæða"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Mistókst"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "dragði á listann til að halda áfram"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Bíð"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Biðstaða"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Keyrir"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Núverandi upphal: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Núverandi niðurhal: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Fyrrverandi upphal: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Fyrrverandi niðurhal: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Skiptihlutfall: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s skiptifélagar, %s sæði, Heildarfjöldi frá flaumþjóni: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Dreifð eintök: %d; Næst: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Hlutir: samtals %d, lokið %d, hálfkláraðir %d, í gangi %d (%d eru tómir)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d lélegir hlutir + %s fyrirspurnum fleygt"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% lokið, %s eftir"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Niðurhalstíðni"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Upphalstíðni"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s ræstur"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Hætta"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr "_Loka"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Opna flaumskrá"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Opna _URL flaums"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Gera _nýjan flaum"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Bíða/Halda áfram"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Sýna/fela sótta _flauma"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Stilla glugga til að passa"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Kladdi"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Stillingar"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hjálp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Um"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Framlag"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Skrá"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Sý_n"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Leita að flaumum"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(stöðvaður)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(margir)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Nú þegar að hala niður uppsetningu %s "
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Setja upp nýja %s núna?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Viltu hætta í %s og setja upp nýja útgáfu, %s, núna?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s hjálp er fáanleg á \n"
+"%s\n"
+"Viltu kíkja þangað núna?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Heimsækja hjálpar síðu?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Einum flaum á lista er lokið. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Ertu viss um að þú viljir fjarlægja þetta?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "%d flaumum á lista er lokið. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Viltu fjarlægja þá alla?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Fjarlægja alla kláraða flauma?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Engir kláraðir flaumar"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Það eru engir sóttir flaumar til að fjarlægja."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Opna flaum:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Breyta vistunar slóð "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Skrá er til fyrir!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" er þegar til. Viltu velja annað nafn?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Vista staðsetningu "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Skráarsafn er til fyrir!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" er þegar til. Ætlaðir þú að gera annað nákvæmlega eins skráarsafn í "
+"núverandi skráarsafni?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(víðvær skilaboð) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Villa"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Margar villur komu fram. Viltu skoða villu kladda?"
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Stöðva flaum?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+"Þú ert við það að keyra \\\"%s\\\". Viltu einnig stöðva aðra flauma í "
+"keyrslu?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Ertu búinn að gefa framlag?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Velkomin í nýju útgáfuna af %s. Ertu búinn að gefa framlag?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Þakkir!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Takk fyrir framlagið. Til að gefa aftur, veldu \"Framlag\" í valmyndinni "
+"\"Hjálp\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Gat ekki ræst flaumbiðröðina, sjá villur að ofan."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s höfundur flaums %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Gera flaum með þessari skrá eða skráarsafni:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Veldu..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Skráarsöfn verða að fjölskráa flaumi)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Stærð hlutar:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Nota _flaumþjón:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Nota _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Hnútar (valkostur):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Athugasemdir:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Smíða"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Hýsill"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Smíða flaum..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Athuga stærð skráa..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Byrja sæðingu"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "er að smíða "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Lokið."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Gerð flaums lokið."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Villa!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Villa við gerð flaums: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s eða nýrri útgáfa er nauðsynleg"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dagar"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dagur %d klst"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d klst"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d mínútur"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekúndur"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekúnda"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hjálp"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Algengar spurningar:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Fara"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Veldu skráarsafn..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Allar skrár"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Flaumar"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Gera nýtt skráarsafn"
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Velja skrá"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Velja skráarsafn"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Gat ekki sótt vistaða stöðu: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Gat ekki vista stöðu viðmóts: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Innihald stöðu skráar er ótækt"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Villa við lestur skráar \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "gat ekki nákvæmlega endurskapað stöðu"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ótæk stöðu skrá (tvískráning)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Ónýt gögn í \"%s\", gat ekki endurræst flaum"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(upplýsinga tætla passar ekki)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ótæk stöðu skrá (gölluð skráning)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Léleg stöðuskrá viðmóts"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Vitlaus útgáfa stöðuskráar viðmóts"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "Óstudd útgáfa stöðskráar viðmóts (etv frá nýrri útgáfu?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Gat ekki eytt skrá %s úr flýtiminni:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Þetta er ekki gild flaumskrá. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Þessi flaumur (eða annar með sama innihaldi) er þegar í gangi."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Þessi flaumur (eða annar með sama innihaldi) er þegar í biðstöðu."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Flaumur í óþekktri stöðu %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Gat ekki ritað skrá "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "Þessi flaumur mun ekki halda rétt áfram við endurræsingu biðlara"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Get ekki haft fleiri en %d flauma í gangi samtímis. Nánari upplýsingar í "
+"spurningalistanum %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"Get ekki ræst flaum þar sem að aðrir flaumar eru í biðstöðu, þessi hefur "
+"þegar uppfyllt stöðvunarskilyrði."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"Get ekki ræst flaum þar sem að hann hefur þegar uppfyllt stöðvunarskilyrði "
+"fyrir sáningu síðasta flaums."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+"Gat ekki sóttt nýjustu útgáfu frá \n"
+" %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Gat ekki lesið streng úr nýrri útgáfu %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Gat ekki fundið hentuga tímabundna staðsetningu til að geyma uppsetningar "
+"forrit %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Engin flaumur til fyrir uppsetningar forrit %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"Uppsetningar forrit %s %s virðist ekki vera til staðar, óklárað, eða skemmt."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Get ekki keyrt uppsetningar forrit á þessu stýriskerfi."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Engir flaumar"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Hef niðurhal"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Keyrir eðlilega"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+"Niðurhal gæti verið hægvirkt:\n"
+"Líklega bakvið eldvegg eða NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Athugið nettengingu"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+"skráarsafn það sem geymir breytileg gögn svo sem flýtiræsingar-gögn og stöðu "
+"viðmóts hefur verið vistað. Sjálfgefið gildi er skráarsafnið 'data' í "
+"'config' skráarasafninu."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"Stafasett notað á skráarkerfi tölvunar. Sjálfgefið ef tómt. Sjálfgefið "
+"gildi fæst ekki með Pythong útgáfum eldri en 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO tungumál kóði sem nota skal"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+"IP tala tilkynnt til flaumþjóns (hefur engin áhrif nema þú sért á sama neti "
+"og flaumþjónninn)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+"port númer sýnilegt út á við ef það er annað en það sem hlustað er á "
+"staðbundið"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"lægsta portnúmer til að hlusta á, talið er upp á við ef portið er ekki "
+"fáanlegt"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "hæsta portnúmer til að hlusta á"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip til að binda nærlægt"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekúndur líða á milli uppfærslu upplýsinga á skjá"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "mínútur sem bíða skal áður en fleiri skiptifélaga er leitað"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minnsti fjöldi skiptifélaga sem þarf til að hætta fyrirspurnum"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "fjöldi skiptifélaga sem þarf til að hætta að leita fleiri tenginga"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "hámarks fjöldi ókláraða tenginga útávið"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+"hámark fjöldi tenginga sem leyfa skal, eftir það er öllum nýjum tengingum "
+"innávið lokað strax"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "hvort athuga skal tætlur á diski"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "hámarks upphal í KB/s, 0 táknar ekkert hámark"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "fjöldi tenginga í upphali sem fylla skal út í"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"hámarksfjöldi skráa sem leyfilegt er að opna í einu fyrir fjölskráa flaum, 0 "
+"táknar ekkert hámark. Notað til að forðast það að leyfilegar "
+"skráartengingar klárist."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+"Starta biðlara án flaumþjóns. Þetta þarf að vera virkt til þess að hægt sé "
+"að hala niður flaumum án flaumþjóns."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "fjöldi sekúnda milli lífboða"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "hversu mörg bæti skal óska eftir per fyrirspurn"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+"stærsta gildi á forskeyti kótunar yfir vírinn - stærri gildi missa "
+"tenginguna."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"sekúndur þar til að tengli sem ekki hefur tekið við neinum gögnum er lokað"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "tími til að bíða milli þess að athuga hvort tengingar séu hjaðnaðar"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+"stærsta gildi á sneið til að senda skiptifélugum, stórar sneiðar loka "
+"tengingu"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr "hámarks tímabil sem notað er til að áætla hraða upp- og niðurhals"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "hámarks tímabil sem notað er til þess að áætla tíðni sáningar"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"hámarks tími sem bíða skal milli þess að reyna tilkynningar sem ekki er "
+"svarað"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+"sekúndur sem bíða skal eftir gögnum áður en gert er ráð fyrir að tengingin "
+"sé því sem næst stífluð"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"fjöldi tenginga í niðurhali sem þarf til að ásókn í gögn verði eftir fjölda "
+"staka fremur en að handahófi"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "hvé mörg bæti skal skrifa til net biðminnis í einu"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+"neita frekari tengingum frá skiptifélugum sem eru gallaðir eða senda "
+"viljandi frá sér gölluð gögn"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "ekki tengjast mörgum skiptifélugum sem hafa sömu IP tölu"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"ef ekki núll, setja TOS valkostinn fyrir tengingar við skiptifélaga sem "
+"þetta gildi"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"virkja leiðréttingu á galla í BSD libc sem gerir lestur skráa mjög hægvirkan."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "slóð HTTP sels sem nota skal fyrir tenginar flaumþjóns"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "loka tengingum með RST og forðast TCP TIME_WAIT stöðuna"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Nota Twisted net-forritasafnið fyrir nettengingar. Gildið 1 nýtir Twisted, 0 "
+"notar ekki Twisted, -1 er sjálfval með tilhneygingu til Twisted."
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"skráar nafn (fyrir flauma með staka skrá) eða nafn skráarsafns (fyrir "
+"fjölskráa flauma) sem vista skal flauminn í, það kemur í stað innbyggðs nafn "
+"flaumsins. Sjá nánar --save_in, ef hvorugt er tekið fram er notandi beðinn "
+"um að ákvarða staðsetninguna."
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "sýna nánara notenda viðmót"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr "hámarks fjöldi mínúta þar til fullsóttur flaumur hættir sáningu"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+"lágmarks tíðni upp/niðurhals í prósentum sem skal ná áður en hætt er að sæða "
+"flaumi. 0 táknar ekkert takmark."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+"lágmarks tíðni upp/niðurhals í prósentum sem skal ná áður en hætt er að sæða "
+"síðasta flaumi. 0 táknar ekkert takmark."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Sæða hverjum loknum flaumi endalaust (eða þangað til að notandi stöðvar hann)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Sæða síðasta flaumi endalaust (eða þangað til að notandi stöðvar hann)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "hefja niðurhal í biðstöðu"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+"tiltekur hvernig forritið skal hegða sér þegar notandi reynir að hefja anna "
+"flaum: \"útskipta\" þýðir að alltaf skuli skipta út flaumi í keyrslu fyrir "
+"nýjan, \"bæta við\" þýðir ávallt að bæta flaumi við, og \"spyrja\" þýðir að "
+"spyrja skuli notanda í hvert sinn."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Keyra BitTorrent minnkaðan"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+"hundsa útgáfu númer gefið með http athugun og virkja kembun útgáfu númers"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+"hundsa útgáfu númer gefið með athugun á útgáfu númeri og virkja kembun "
+"útgáfu númers"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"stilla stærð og staðsetningu glugga, á forminu: BREIDDxHÆÐ+XHLIÐRUN+YHLIÐRUN"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+"skráarnafn (fyrir einna skráar flauma) eða skráarsafn (fyrir fjölskráa "
+"flauma) til að vista flaum sem, yfirtekur sjálfgefið gildi í flaumskránni. "
+"Sjá einnig '--save_in'"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+"hámarks fjöldi samtímis upphala. -1 táknar (vonandi) skynsamlegan fjöld "
+"byggðan á '--max_upload_rate'. Sjálfgefnu gildin eru aðeins skynsamleg "
+"þegar einn flaumur er keyrður í einu."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+"nærstatt skráarsafn þar sem innihald flaums skal vista. Skrárnar verða "
+"gerðar í sjálfgefnu skráarsafni því sem tekið er fram í .torrent skránni. "
+"Sjá einnig '--save_as'."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "hvort spyrja skal um staðsetningu til að vista skrár í"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+"nærstatt skráarsafn þar sem innihald flaums skal vista, notandi nafn "
+"ákvarðað af '--saveas_style'\". If þetta gildi er tómt þá er hver flaumur "
+"vistaður undir skráarsafni því sem tilgreynnt er með .torrent skránni."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "hversu oft skal endurskoða skráarsafn, í sekúndum"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+"bíða í þetta margar sekúndur eftir að flaumi hefur verið veitt eftirtekt "
+"þangað til að hann verður sóttir. Þetta kemur í veg fyrir kapphlaup við "
+"flaumþjónin"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+"Hvernig skíra skal sótta flauma: 1: nota nafn flaumskráar (án .torrent); 2: "
+"nota nafn tilgreynt inni í flaumskrá; 3: skapa skráarsafn með nafni "
+"flaumskráar (án .torrent) og vista í því skráarsafni með nafni tilgreyndu "
+"inni í flaumskrá; 4: ef nafn .torrent skráar og nafn tilgreynt inni í "
+"flaumskrá eru eins skal nota það nafn (style 1/2), annars skal smíða "
+"tímabundin skráarsafn; 3. ATHUGIÐ: valkostur 1 og 2 geta srkifað yfir skrár "
+"án viðvörunar og hindrað ýmis kona öryggis mál."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "hvort sýna skal alla slóð eða innihald flaums fyrir hvern flaum"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "skráarsafn til að leita að .torrent skrám (hálf-endurkvæmin leit)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "hvort birta skuli greiningarupplýsingar á staðal úttaki"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "setja sneiðar stærð í þetta veldi af tveimur"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "sjálfgefið nafn flaumþjóns"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+"nota þjónalausan flaum ef ósatt, í stað tilkynningar URL er notaður "
+"áreiðanlegur hnútur á forminu <ip tala>:<port> eða tómur strengur til að "
+"draga hnúta úr beinitöflu."
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "niðurhali lokið!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<óþekkt>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "lýk eftir %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "niðurhal tókst"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB upp / %.1f MB niður)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB upp / %.1f MB niður)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d séðir núna, ásamts %d dreifðum eintökum(%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d dreifð eintök (næst: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d séðir núna"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "VILLA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "vistun: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "stærð skáar:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "hlutfalli lokið:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tími eftir:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "slóð niðurhals:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "tíðni niðurhals: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "tíðni upphals:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "skiptihlutfall:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "staða sæðis:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "staða skiptifélaga:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Þú mátt ekki tilgreina bæði --save_as og --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "frágangur"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Villa við lestur stilliskráar: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Villa við lestur .torrent skráar: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "þú verður að tilgreina .torrent skrá"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Frumstilling á textaham viðmóts mistókst, það verður ekki gengið lengra."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+"Þetta viðmót þarfnast Python \\\"curses\\\" einingar sem er því miður ekki "
+"til fyrir Windows útgáfu Python. Það er þó fáanlegt fyrir Cygwin sem getur "
+"keyrt á Win32 stýriskerfum (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Þú getur þó notað \"bittorrent-console\" til niðurhals."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "skrá:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "stærð:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "staðs:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "framvinda:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "staða:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "niðurh:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "upph:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "skiptihl:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sáning:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "skipti f:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d séðir núna, ásamts %d dreifðum eintökum(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "villur:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "villa:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Upphal Niðurhal Klárað Tíðni"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "hala niður %d hlutum, hef %d hluti, %d af %d hlutum lokið"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Þessar villur komu fram við keyrslu:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Notkun: %s URL_FLAUMÞJÓNS [FLAUMSKRÁ [FLAUMSKRÁ ... ]]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "gömul ámininng fyrir %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "engir flaumar"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "KERFISVILLA - FRÁVIK"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Viðvörun:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " er ekki skráarsafn"
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+"villa: %s\n"
+"keyrðu án færibreyta til þess að fá útskýringar"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+"\n"
+"FRÁVIK:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Þú getur þó notað \"btdownloadheadless.py\" til niðurhals."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "tengi skiptifélaga"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "áætlaður tími eftir %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Stærð"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Upphal"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Samtals:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s skiptifélagar %s sæði %s dreifð eintök - %s niður %s upp"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "villa:"
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+"\n"
+"keyrðu án færibreyta til þess að fá útskýringar"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "valfjráls athugasemd til að setja í .torrent skrá "
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "geyma flauminn í tilgreindri skrá"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - þýða %s lýsigagna skrár"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Notkun: %s [FLAUMSKRÁ [FLAUMSKRÁ ... ]]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "lýsigögn í skrá: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "upplýsinga tætla:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "skráarnafn: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "stærð skráar:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "skrár:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nafn skráarsafns: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "stærð skrársafns:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "tilkynningar URL flaumþjóns: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "hnútar án flaumþjóna:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "athugasemd:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Mán"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Þri"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mið"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Fim"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Fös"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Lau"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Sun"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Maí"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jún"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Júl"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ágú"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nóv"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Des"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Þjappað: %i Óþjappað: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Gat ekki vistað þessa valkosti: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "Villa við lestur stilliskráar. Eldri stilliskrá vistuð í \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Valkostur passar ekki: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Þú verður að hætta og enduruppsetja %s. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Fann ekki þýðingu fyrir tungumálið \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Skráin %s tilheyrir öðrum flaumi í keyrslu"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Skráin %s er þegar til, en er nokkuð óvenjuleg skrá"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Skráinn virkar of stutt"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Þetta form flýtiskráar er ekki stutt, það kann að vera úr annarri útgáfu."
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+"Annað forrit virðist hafa fært, endurskírt eða eytt skránni. Einnig er "
+"möguleiki að %s hafi hrunið við síðustu keyrslu."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+"Annað forrit virðist hafa átt við skránna, eða %s kann að hafa hrunið við "
+"síðustu keyrslu."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+"Annað forrit virðist hafa breytt stærð skrárinnar, eða %s kann að hafa "
+"hrunið við síðustu keyrslu."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Gat ekki sótt flýtigögn:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "Tengingu neitað"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Þú óskaðir eftir endurnýtingu eftir bindingu. Því miður er ekki hægt að "
+"framkvæma hana."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "kalla ætti aðeins einu sinni á listen_forever() - per reactor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+"fallið listen_once() svarar kannski ekki kalli fyrr en eftir einhverja "
+"virkni og gæti því ef til vill ekki unnið úr þeim atburði sem þú vilt. "
+"Notaðu listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "léleg gögn í svarskrá - útkoma er of lítil"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "léleg gögn í svarskrá - útkoma of há"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "athuga núverandi skrá"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 eða gögn flýtiskráar passa ekki við stöðuská (vantar gögn)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Gögn flýtiskráar eru ótæk (skrá inniheldur fleiri gögn)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Gögn flýtiskráar eru ótæk (ótæk gildi)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "gögn á diski eru skemmd - eru tvö eintök í gangi?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"skrá átti að vera heil við keyrslu en tætlur einhverra hluta stóðust ekki "
+"samanburð"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Gat ekki ákvarðað merkja rekill:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "missti \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "bætti við \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "staðfestingu á tætlu er beðið"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "niðurhal"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Endurles stilliskrá"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+"Þú getur ekki tiltekið nafn á .torrent skrá þegar margir flaumar eru gerðir "
+"í einu"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "\"%s\" kóðun skráarkerfis er ekki studd í þessari útgáfu"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+"Gat ekki umbreytt nafni \"%s\" í utf-8 (%s). Annaðhvort er kóðunin \"%s\" "
+"röng eða skráarnafn inniheldur ólögleg bæti."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+"Skráin/skráarsafnið \"%s\" inniheldur frátekin unicode gildi sem samsvara "
+"ekki stöfum."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Gat ekki lesið skráarsafn"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Gat ekki statað"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "fjarlægi %s (mun bæta við aftur)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**aðvörun** %s er sami flaumur og %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**viðvörun** villur í %s"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... tókst"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "fjarlægi %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "athugun lokið"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Gat ekki lesið %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+"Gat ekki halað niður eða opnað \n"
+"%s\n"
+"Prófaðu að nota vafrara til að sækja flaumskrána."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s eða nýrri útgáfa er nauðsynleg"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Of seint að skipta um bakenda þjóns, %s er þegar í notkun."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Tilkynning flaumþjóns er ekki lokið þótt %d sekúndur séu liðnar frá því hún "
+"hófst"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Gat ekki tengst flaumþjóni, kallið 'gethostbyname' mistókst - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Vandamál með tengingu við flaumþjón -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "léleg gögn frá flaumþjóni -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "hafnað af flaumþjóni - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+"Flaumi var slitið vegna höfnunar frá flaumþjóni. Engir skiptifélagar eru "
+"tengdir."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Skilaboð frá flaumþjóni: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "viðvörun frá flaumþjóni - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Flaumþjónalaus tilvísun mistókst: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "léleg lýsigögn - ekki skráarsafn"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "léleg lýsigögn - lélegur hlutalykill"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "léleg lýsigögn - ólögleg lengd hluts"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "léleg lýsigöng - vitlaust nafn"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nafnið %s er ekki leyft af öryggisástæðum"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "blanda skráar/fjölskráa"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "léleg lýsigögn - vitlaus lengd"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "léleg lýsigögn - \"files\" er ekki listi skráa"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "léleg lýsigögn - skrá verður að vera orðabók"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "léleg lýsigögn - vitlaus slóð"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "léleg lýsigögn - léleg slóð"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "slóðin %s er ekki leyfð af öryggisástæðum"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "léleg lýsigögn - tvítiltekinn slóð"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "léleg lýsigögn - nafn notað sem bæði skráarnafn og nafn skráarsafns"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "léleg lýsigögn - röng tegund hlutar"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "léleg lýsigögn - enginn tilkynningar URL"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "léleg lýsigögn - hnútur er ekki listi"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "léleg lýsigögn - listi hnúta verður að hafa aðeins tvö stök"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "léleg lýsigögn - hýsill hnúts verður að vera strengur"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "léleg lýsigögn - port hnúts verður að vera heiltala"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "ástæða bilunar verður að vera strengur"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "viðvörun verður að vera strengur"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"ótækt gildi í lista yfir skiptifélaga - gögn skiptifélaga verða að vera "
+"orðabók"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"ótækt gildi í lista yfir skiptifélaga - ip tala skiptifélaga verður að vera "
+"strengur"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"ótækt gildi í lista yfir skiptifélaga - port skiptifélaga verður að vera "
+"heiltala"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ótækt gildi í lista yfir skiptifélaga - ótækt einkenni skiptifélaga"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ótækur skiptifélagalisti"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "tímabil tilkynninga ótækt"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "mínútu tímabil tilkynninga ótækt"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ótækt auðkenni flaumþjóns"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ótækur fjöldi skiptifélaga"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ótækur fjöldi sæða"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"síðasta\" færsla ótæk"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Notkun: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+"[VALKOSTIR] [FLAUMSKRÁARSAFN]\n"
+"\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+"Ef að 'non-option' færibreyta er til staðar þá er gildi hennar\n"
+"tekið sem gildi 'torrent_dir' valkostsins.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[VALKOSTIR] [FLAUMSKRÁR]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[VALKOSTIR] [FLAUMSKRÁ]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[VALKOSTIR] URL_FLAUMÞJÓNS SKRÁ [SKRÁ]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "breytur eru -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (sjálfgefið sem "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "óþekktur lykill"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "færibreyta send án gildis"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "þáttun skipunar mistókst við "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "%s valkostur er nauðsynlegur."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Verður að hafa að minnsta kosti %d breytur."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Of margar breytur - %d er hámarkið."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "rangt form á %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Portnúmer til að hlusta á."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "skrá til að geyma upplýsingar um niðurhala"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tími til lokunar hjaðnaðra tenginga"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekúndur líða á milli vistunar á d-skjali."
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "sekúndur líða áður en niðurhalar renna út"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "sekúndur sem niðurhalar skulu bíða milli tilkynninga"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+"sjálfgefin fjöldi af skiptifélugum sem senda skal skilaboð til ef biðlari "
+"tekur það ekki fram"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "tími til að bíða milli þess að athuga hvort tengingar séu hjaðnaðar"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hversu oft skal athuga hvor niðurhalar séu bak við NAT (0 = ekki athuga)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "hvort bæta eigi við niðurstöðum á NAT uppflettingum við kladda"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"lágmarks tími sem þarf að vera liðin frá skolun þar til önnur er framkvæmd"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"lágmarks tími í sekúndum sem þarf að líða þar til flýtiminni er skolað vegna "
+"stöðnunar"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+"leyfa aðeins niðurhali flauma í þessu skráarsafni (og í skráarsöfnum þar "
+"undir sem hafa engar .torrent skrár). Ef svo stillt þá munu flaumar í þessu "
+"skráarsafni sjást á upplýsinga síðum hvort sem þeir hafa skiptifélaga eður ei"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"leyfa ákveðum lyklum í flaumum sem eru í leyfðu skráarsafni (allowed_dir) að "
+"hafa áhrif á aðgang flaumþjóns"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "hvort skuli enduropna kladda við mótttöku HUP merkis"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"hvort birta skuli upplýsinga síðu þegar rótarskráarsafn flaumþjónsins er "
+"hlaðið"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "URL til að vísa upplýsingasíðu til"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "hvort birta eigi nöfn úr leyfðu skráarsafni"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"skrár sem innihalda x-icon gögn skila þeim þegar vafri óskar eftir favicon."
+"ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"hunsa skal IP GET færibreytur frá vélum sem eru ekki á nærliggjandi IP neti "
+"(0 = aldrei, 1 = alltaf, 2 = hunsa ef NAT staðfesting er ekki framkvæmd). "
+"Gögn úr hausum HTTP proxy sem gefa upprunalega IP tölu er nýtt eins og gildi "
+"--ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"skrá til að vista kladda flaumþjónsins, notið - fyrir staðalúttak "
+"(sjálfgefið)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+"notið með 'allowed_dir'; bæti við URL /file?hash={tætla} sem gerir notenda "
+"kleyft að hala niður flaumskránni"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"halda skal úrvinda flaumum eftur að þeir eru útrunnir (svo að þeir komi fram "
+"á /scrape síðu og vefsíðu). Hefur aðeins áhrif ef að 'allowed_dir' er ekki "
+"tiltekin"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+"krafs aðgangur leyfður (getur verið engin 'none', sérstakur 'specific' eða "
+"algjör 'full')"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+"hámarks fjöldi skiptfélaga sem senda skal gögn um við hverja fyrirspurn"
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+"skráin þín finnst ef til vill annarsstaðar í alheiminum\n"
+"en því miður, þá er hún ekki hér\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**viðvörun** tiltekið myndtákn -- %s -- finnst ekki."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**viðvörun** stöðuskráin %s er skemmd; endurræsi"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Kladdi hefst:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**viðvörun** gat ekki beint staðalúttaki í kladda: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Kladdi enduropnaður: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**viðvörun** gat ekki opnað kladda aftur"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+"krafs möguleikin sem var tiltekinn er ekki til staðar á þessum flaumþjóni."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "fullvirkandi krafs möguleiki er ekki til staðar á þessum flaumþjóni."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "sækifall 'get' er ekki til staðar á þessum flaumjóni."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Þessi flaumþjónn hefur ekki leyfi fyrir niðurhal það sem óskað var eftir."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "keyrðu án færibreyta til þess að fá útskýringar"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Frágangur: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Ekki er hægt að keyra tvö eintök af sama flaumi"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Fela %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Sýna %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "b-kóðun á streng er ógild"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "b-kóðað gildi er ótækt (gögn á eftir gildu viðskeyti)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "hæsta port minna en lægsta port - engin port til að skoða"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Gat ekki opnað port til að hlusta á: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Gat ekki opnað port til að hlusta á: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Athugið stillingar á port bili."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Frumkeyrsla"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Gat ekki sótt flýtigögn: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Staðfesti allar tætlur."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "hluti %d samsvarast ekki tætlu, endursæki"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr "Reynt var að sækja þjónlausan flaum sem hefur þann valkost óvirkan."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "niðurhal mistóksts:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO villa: Annaðhvort er ekkert laust rými á disknum eða ómögulegt reyndist "
+"að vista svo stóra skrá: "
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "hætti vegna IO villu:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "hætti vegna villu í stýriskerfi: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "hætti vegna innri villu: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Frekar villur við lokun vegna villu: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Gat ekki fjarlægt flýtiskrá eftir villu: "
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "sáning"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Gat ekki sótt flýtigögn:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "frágangur"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Þetta virðist vera gömul útgáfa af Python sem styður ekki sjálfvirka "
+"ákvörðun á stafasetti skráarkerfis. Geri ráð fyrir 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr "Python gat ekki ákvarðað stafasett sjálfvirkt. Nota 'ASCII' í staðinn."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "%s stafasett skráarkerfis er ekki stutt. Nota 'ASCII' í staðinn."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Ótæk slóð:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+"Þessi flaumskrá hefur verið smíðum með gölluðum tólum og hefur skráarnöfn "
+"sem eru ekki rétt kóðuð. Sum eða öll skráarnöfn gætu birst á annan hátt en "
+"höfundur flaumskráarinnar hafði hugsað."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+"Þessi flaumskrá hefur verið smíðum með gölluðum tólum og inniheldur léleg "
+"stafagildi sem samsvara ekki neinum raunverulegum stöfum. Sum eða öll "
+"skráarnöfn gætu birst á annan hátt en höfundur flaumskráarinnar hafði hugsað."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+"Þessi flaumskrá hefur verið smíðum með gölluðum tólum og hefur skráarnöfn "
+"sem eru ekki rétt kóðuð. Nöfnin sem eru notuð gætu þó enn verið rétt."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+"Stafasettið (\"%s\") sem notað er af skráarkerfinu getur ekki birt alla "
+"stafi sem eru notaðir í nafni þessa flaums. Skráarnöfnum hefur verið breytt "
+"frá upprunalegum gildum."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Windows stýriskerfið ræðu ekki við suma stafi sem eru notaðir í skráarnöfnum "
+"þessa flaums. Skráarnöfnum hefur því verið breytt."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+"Þessi flaumskrá hefur verið smíðum með gölluðum tólum og hefur a.m.k. 1 skrá/"
+"skráarsafn sem er með ógilt nafn. En þar sem að allar slíkar skrár voru "
+"skráðar með 0 bæta lengd þá hafa þær verið hunsaðar."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Óþekkt skipun: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Gat ekki opnað stýritengil: þegar í notkun"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Gat ekki lokað gamalli skrá stýrisstengis: "
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Gat ekki opnað stýritengi: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Gat ekki sent skipun:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Víðvær mutex þegar gerður."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Fann ekki opið port!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Gat ekki búið til skráarsafn fyrir gögn!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Gat ekki sótt víðværan mutex lás fyrir stýristengils skrá!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Ekki var gengið almennilega frá annari keyrslu af BitTorrent. Held áfram."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Annað eintak af BT er í keyrslu, en \"%s\" er ekki til staðar.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Mun giska á port."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port fannst: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Gat ekki fundið port:"
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC staða: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE umvörpun hafin."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "gat ekki afskráð eða lokað tengli: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "missti tengil á þjóni"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Villa við meðhöndlun á móttekinni tengingu: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Þarf að hætta þar sem að TCP staflinn er að fríka út. Vinsamlegast skoðið "
+"svör við algengum spurningum á %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "óþekkt tegund af skilaboðum móttekin"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "biðtími liðinn"
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr "villa í tengli"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..1253410
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,2868 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 15:23-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: Italian <kde-i18n-it@mail.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installare Python versione %s o successivo"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "sconsigliato, non usare"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Impossibile comunicare con un altro processo %s ma uno sembra funzionare."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Chiudere tutte le %s finestre potrebbe risolvere il problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s già in esecuzione"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Impossibile comunicare con un altro processo %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Necessaria versione PyGTK %s o successiva"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "trascina per riordinare"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "clic tasto destro per il menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "connessione"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cavo 128k e superiore"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cavo 256k e superiore"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k e superiore"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Inserisci URL del torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Inserisci l'URL di un file torrent da aprire:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Velocità massima di invio:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Ferma temporaneamente tutti i torrent in esecuzione"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Riprendi il download"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nuova %s versione è disponibile"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Una nuova %s versione è disponibile.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Stai usando %s, e la nuova versione è %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Puoi sempre ottenere l'ultima versione su \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Scarica più tardi"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Scarica adesso"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Avvisami dopo"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Informazioni su %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versione %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Impossibile aprire %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donazione"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Registro Attività"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Salva registro in:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "registro salvato"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "registro cancellato"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Impostazioni"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Impostazioni generali"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Lanciare automaticamente BitTorrent, all'avvio di Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizzare nella barra di sistema"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr ""
+"Il testo nella barra di progresso è sempre nero/n (non richiede riavvio)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Salvataggio"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Salva i nuovi download in:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Cambia..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Chiedere dove salvare ogni nuovo download"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Download in corso"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "All'avvio di un nuovo torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Fermare un altro torrent attivo per fare spazio"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Non fermare gli altri torrent attivi"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Chiedere di volta in volta"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seeding"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Seed dei torrent completati: fino al raggiungimento [_] % del tasso di condivisione, o per [_] minuti, qualunque sia il primo."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seed indefinito"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seed dell'ultimo torrent completato: fino al raggiungimento del [_] % del tasso di condivisione."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rete"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Cercare una porta disponibile:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "inizia alla porta:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Attivare mapping porta automatico"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP da riferire al tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Non ha effetto a meno che non ci si trovi\nsulla stessa rete locale del tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"AVVISO: Cambiando queste impostazioni\n%s potrebbe non funzionare correttamente."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opzione"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valore"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avanzate"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Scegli directory predefinita dei download"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Errore nella rimozione della scorciatoia: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "File in \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Mai"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Non scaricare mai"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normale"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Scaricare normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primo"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Scaricare per primo"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nome file"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lunghezza"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Scaricato"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "mai"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primo"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peer per \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Indirizzo IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Connessione"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s in entrata"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s in uscita"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB scaricati"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB inviati"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completato"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s stimati download peer"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID peer"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessato"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Intasato"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Affrontato"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Invio ottimistico"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remoto"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "locale"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "peer errato"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d errato"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "vietato"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informazioni per \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nome torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent senza tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Url di annuncio:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", in un file"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", in %d file"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Dimensione totale:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Parti:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hash informazioni:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Salva in:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nome file:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "Apri directory"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrare la lista dei file"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informazioni sul torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Rimuovi torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Interrompi torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", effettuerà la distribuzione del seed per %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", effettuerà la distribuzione della fonte completa all'infinito."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Completato, rapporto di condivisione: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Completato, %s inviato"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Completato"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Info sul torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Lista file"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Lista fonti"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "Cambia posizione"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "Seed indefinito"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Riprendi"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "Finisci"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "Rimuovi"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Interrompi"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Sei sicuro di voler rimuovere \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Il tasso di condivisione per questo torrent è %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Hai inviato %s a questo torrent. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Vuoi rimuovere questo torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Finito"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "trascina nella lista per distribuire la fonte completa"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Fallito"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "trascina nella lista per riprendere"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "In attesa"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "In pausa"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "In esecuzione"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Attuale in uscita: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Attuale in entrata: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Precedente in uscita: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Precedente in entrata: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Tasso di condivisione: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peer, %s fonti complete. Totali dal tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copie distribuite: %d; Prossima: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Parti: %d totali, %d complete, %d parziali, %d attive (%d vuote)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d parti errate + %s nelle richieste scartate"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% completato, %s rimanente"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Tasso di download"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Tasso di invio"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "ND"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s avviati"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "Esci"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "C_hiudere"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "Apri file torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Apri URL torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Crea nuovo torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "Pausa/Avvio"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostra/Nascondi torrent completati"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Ridimensiona finestra"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "Registro"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "Impostazioni"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "Aiuto"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "Informazioni su"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "Donazione"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "File"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Visualizza"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Cerca torrent"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(fermato)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(multiplo)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Sto già scaricando l'installer %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installo il nuovo %s ora?"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Uscire da %s ed installare la nuova versione, %s, adesso?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s l'aiuto è qui \n%s\nVuoi andarci adesso?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Vuoi visitare la pagina di aiuto sul web?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "C'è un torrent completato nella lista."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Vuoi rimuoverlo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Ci sono %d torrent completati nella lista."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Vuoi rimuoverli tutti?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Rimuovere tutti i torrent completati?"
+
+#: bittorrent.py:3230
+msgid "No finished torrents"
+msgstr "Nessun torrent completato"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Non ci sono torrent completati da rimuovere."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Apri torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Cambia posizione di salvataggio per "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "File già esistente!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" già esistente. Vuoi scegliere un nome file differente?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Posizione di salvataggio per "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Directory già esistente!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" già esistente. Vuoi creare un duplicato della directory all'interno di quella già esistente?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(messaggio globale) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Errore"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Si sono verificati errori multipli. Clicca OK per vedere il registro errori."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Vuoi fermare il torrent in esecuzione?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "Si sta per avviare \"%s\". Fermare un altro torrent attivo?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Hai già donato?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Benvenuto alla nuova versione di %s. Hai già donato?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Grazie!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Grazie per aver donato! Per donare ancora, seleziona \"Donazione\" dal menu \"Aiuto\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+"Impossibile far partire la coda del torrent, guardare sopra per leggere gli errori che hanno causato il problema."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s creatore metafile %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Crea il file torrent per questo file/directory:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Scegli..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Le directory diverranno torrent batch)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Dimensione parte:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Usa _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Usa _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nodi (opzionale):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Commenti:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Fare"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Porta"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Creazione torrent..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Controllo dimensioni file..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Inizio seeding"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "creazione "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Completato."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Creazione torrent completata."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Errore!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Errore nella creazione dei torrent: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Necessaria versione GTK %s o successiva"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d giorni"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 giorno %d ore"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ore"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuti"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d secondi"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 secondi"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Aiuto"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Domande frequenti (FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Vai"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Scegli una cartella esistente..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Tutti i file"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrent"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Crea una nuova cartella..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Seleziona un file"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Seleziona una cartella"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Impossibile caricare stato salvato:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Impossibile salvare stato UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Contenuti del file di stato non validi"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Errore nella lettura del file \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "impossibile recuperare completamente lo stato"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Stato del file non valido (entrata duplicata)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Dati corrotti in \"%s\", impossibile recuperare il torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(discordanza infohash)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Stato del file non valido (elemento errato)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "File di stato UI errato"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versione del file di stato UI errata"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versione del file di stato UI non supportata (da una versione del client più nuova?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Impossibile cancellare il file %s in cache:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Questo non è un file torrent valido. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Questo torrent (o uno con gli stessi contenuti) è già in esecuzione."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Questo torrent (o uno con gli stessi contenuti) è già in attesa di essere eseguito."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent in stato sconosciuto %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Impossibile scrivere il file"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "il torrent non sarà riavviato correttamente al riavvio del client"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Impossibile eseguire più di %d torrent simultaneamente. Per maggiori informazioni leggere le FAQ su %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Non avvio il torrent poiché ci sono altri torrent in attesa di esecuzione, e questo corrisponde già alle impostazioni di quando smettere di distribuire il seeding."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Non avvio il torrent poiché questo corrisponde già alle impostazioni di quando smettere il seeding dell'ultimo torrent completato."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Impossibile ottenere l'ultima versione da %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Impossibile analizzare la stringa nuova versione da %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Impossibile trovare una locazione temporanea dove salvare l'installer %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Nessun torrent disponibile per l'installer %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "l'installer %s %s appare come incompleto, perduto o corrotto."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Impossibile lanciare l'installer su questo Sistema Operativo"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nessun torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Avvio del download"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Esecuzione normale"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Questi download potrebbero essere lenti:\nProbabilmente a causa di firewall/Nat"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Controllo della connessione al network"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"la directory nella quale i dati variabili come le informazioni fastresume e lo stato GUI sono salvate. Default nella sottodirectory 'data' della directory config di bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codifica dei caratteri usata sul filesystem locale. Se lasciato vuoto, viene rilevato automaticamente. La rilevazione automatica non funziona con versioni precedenti di Python 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Codifica ISO della lingua da usare"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ip da riferire al tracker (non ha effetto se non si è sulla stessa rete locale del tracker)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"numero di porta visibile globalmente se è differente da quello sul quale il client è in ascolto localmente"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "porta minima in ascolto, aumenta se non disponibile"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "porta massima in ascolto"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip su cui effettuare il bind localmente"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "secondi tra gli aggiornamenti delle informazioni visualizzate"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minuti da attendere tra le richieste di più fonti"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "numero minimo delle fonti per non effettuare una nuova richiesta"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "numero delle fonti a cui interrompere l'inizio di nuove connessioni"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "numero massimo di connessioni incomplete in uscita"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"numero massimo di connessioni da permettere, dopo cui le nuove connessioni saranno chiuse immediatamente"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "se controllare gli hash su disco"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "kB/s massimi da inviare, 0 significa nessun limite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "il numero di invii da riempire con extra antiintasamenti ottimistici"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"il numero massimo dei file in un torrent multifile da tenere aperto in una volta, 0 significa nessun limite. Usato per evitare di esaurire i descrittori dei file."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inizializza un client senza tracker. Deve essere abilitato per scaricare torrent senza tracker."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "numero di secondi di pausa tra gli invii di keepalive"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "quanti byte richiedere per ogni richiesta"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"lunghezza massima del prefisso di codifica che sarà accettato sul collegamento - valori maggiori causeranno la caduta della connessione."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"secondi da attendere tra i socket in chiusura dai quali non si è ricevuto niente"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"secondi da attendere tra il controllo delle connessioni che sono andate in timeout"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"lunghezza massima dello slice da inviare alle fonti, chiudi la connessione se viene ricevuta una richiesta maggiore"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"intervallo di tempo massimo sul quale stimare i tassi attuali di upload e download"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "intervallo di tempo massimo sul quale stimare il tasso attuale di seed"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"tempo massimo da attendere tra i nuovi tentativi di annunci se essi continuano a fallire"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"secondi da attendere per i dati in arrivo su una connessione prima di supporre che sia quasi permanentemente intasata"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"numero di scaricamenti al quale passare, da casuale a prima il più raro"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "quanti byte scrivere in una volta sola nei buffer di rete."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"rifiuta ulteriori connessioni dagli indirizzi con fonti errate o intenzionalmente ostili che mandano dati incorretti"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "non connettere a più fonti che hanno lo stesso indirizzo IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"se non zero, imposta l'opzione TOS per le connessioni alle fonti a questo valore"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"abilita rimedio per un difetto nella BSD libc che rende la lettura dei file molto lenta."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "indirizzo del proxy HTTP da usare per le connessioni ai tracker"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "chiudi le connessioni con RST ed evita lo stato TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Utilizza librerie Twisted network per le connessioni di rete. 1 significa usa twisted, 0 significa non usare twisted, -1 significa autorileva, con preferenza per twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nome file (per torrent a file-singolo) o nome directory (per torrent batch) da usare per salvare il torrent, che prevarrà sul nome di default nel torrent. Vedi anche --save_in, se nessuno è specificato all'utente sarà richiesta la posizione del salvataggio"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "mostra interfaccia utente avanzata"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"il numero massimo di minuti per distribuire la fonte completa del torrent completato prima di interrompere il seeding"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"la velocità minima di invio/download, in percentuale, da ottenere prima di interrompere il seeding. 0 vuol dire senza limite."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"la velocità minima di invio/download, in percentuale, da ottenere prima di interrompere il seeding dell'ultimo torrent. 0 vuol dire senza limite."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seed infinito di ogni torrent completato (fino alla cancellazione da parte dell'utente)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seed infinito dell'ultimo torrent (fino alla cancellazione da parte dell'utente)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "avvia lo scaricatore in pausa"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"specifica come l'applicazione dovrebbe comportarsi quando l'utente prova ad avviare manualmente un altro torrent: \"replace\" significa sostituisci sempre il torrent in esecuzione con quello nuovo, \"add\" significa aggiungi sempre il torrent in esecuzione in parallelo, e \"ask\" significa chiedi all'utente ogni volta."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Avviare BitTorrent minimizzato"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"sovrascrivere la versione fornita dal controllo della versione http ed attivare la modalità di debugging di controllo della versione"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"sovrascrivere la versione correntemente usata nel controllo della versione ed attivare la modalità di debugging di controllo della versione"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"specificare dimensioni e posizione finestra, nel formato: LARGHEZZAxALTEZZA+POSIZIONEX+POSIZIONEY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nome file (per torrent a file-singolo) o nome directory (per batch torrent) da usare per salvare il torrent, che prevarrà sul nome di default nel torrent. Vedi anche --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"il numero massimo di invii consentiti in una volta. -1 significa (idealmente) un numero ragionevole basato su --max_upload_rate.I valori automatici sono sensibili solo eseguendo un torrent alla volta."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directory locale dove i contenuti del torrent saranno salvati. Il file (torrent a file-singolo) o la directory (torrent batch) saranno creati sotto questa directory usando il nome di default specificato nel file .torrent. Vedi anche --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "se chiedere o no una posizione nella quale salvare i file scaricati"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"directory locale dove i torrent saranno salvati, usando un nome determinato da --saveas_style. Se questo viene lasciato vuoto ogni torrent sarà salvato sotto la directory del file .torrent corrispondente"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "quanto spesso riesaminare la directory torrent, in secondi"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"attendere questo numero di secondi, dopo aver notificato un torrent, prima di iniziarlo, per evitare conflitti con il tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Come dare un nome agli scaricamenti torrent: 1: usare il nome DEL file torrent (senza .torrent); 2: usare il nome codificato NEL file torrent; 3: creare una directory col nome DEL file torrent (senza .torrent) e salvare in quella directory usando il nome codificato NEL file torrent; 4: se il nome DEL file torrent (senza .torrent) e il nome codificato NEL file torrent sono identici, usare quel nome (punti 1 e 2), altrimenti creare una directoryintermedia come nel punto 3; AVVERTENZA: le opzioni 1 e 2 hanno la capacità di sovrascrivere i file senza preavviso e possono presentare problemi di sicurezza."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"se visualizzare il percorso completo o i contenuti torrent per ogni torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directory da esaminare per i file .torrent (semi-ricorsiva)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "se visualizzare le informazioni diagnostiche sullo standard output"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "a quale potenza di due impostare la dimensione delle parti"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nome di default del tracker"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"se falso crea un torrent senza tracker, invece di un URL di annuncio, usa un nodo affidabile nella forma <ip>:<porta> o una stringa vuota per prendere alcuni nodi dalla tua tabella di instradamento"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "download completato!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<sconosciuto>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "finirà in %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "file scaricato con successo"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB in uscita / %.1f MB in entrata)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB in uscita / %.1f MB in entrata)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d conosciuti, più %d copie distribuite (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d copie distribuite (prossima: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d conosciuti"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERRORE:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "sto salvando: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "dimensione file:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percentuale completata: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tempo rimasto: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "scarica in: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "tasso di scaricamento: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "tasso di invio: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "punteggio di condivisione: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "stato fonti complete: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stato fonti: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Non puoi specificare entrambi --save_as e --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "chiusura in corso"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Errore durante la lettura della configurazione: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Errore durante la lettura del file .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "devi specificare un file .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Inizializzazione GUI in modo testuale fallita, impossibile procedere."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Questa interfaccia di scaricamento richiede il modulo Python standard \"curses\", il quale sfortunatamente non è disponibile per la traduzione nativa in Windows di Python. E' comunque disponibile per la traduzione Cygwin di Python, eseguibile su tutti i sistemi Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Puoi usare ancora \"bittorrent-console\" per scaricare."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "file:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "dimens:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progresso:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "stato:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "velocità in entrata:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "velocità in uscita:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "condivisione:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "fonti complete:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "fonti:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d conosciuti, più %d copie distribuite(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "errore(i):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "errore:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Inviati Scaricati Completati Velocità"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "sto scaricando %d parti, hanno %d frammenti, %d di %d parti completate"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Questi errori sono occorsi durante l'esecuzione:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Utilizzo: %s URL_TRACKER [FILETORRENT [FILETORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "annuncio vecchio per %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "nessun torrent"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERRORE DI SISTEMA - GENERATA ECCEZIONE"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Avviso: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " non è una cartella"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "errore: %s\neseguire senza argomenti per la spiegazione dei parametri"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nECCEZIONE:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Puoi usare \"btdownloadheadless.py\" per scaricare."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "collegamento alle fonti"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tempo rimasto %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Dimensione"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Inviato"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totali:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s fonti %s fonti complete %s copie dist - %s giù %s sù"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "errore: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\neseguire senza argomenti per la spiegazione dei parametri"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "commento leggibile-dagli-umani opzionale da mettere nel .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "file di destinazione opzionale per il torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodifica %s file metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Utilizzo: %s [FILETORRENT [FILETORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "file metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "informazioni hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nome file: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "dimensione file:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "file: "
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nome cartella: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "dimensione archivio:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url di annuncio: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nodi trackerless"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "commento:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Lun"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mer"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Gio"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Ven"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sab"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dom"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Gen"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mag"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Giu"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Lug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ago"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Set"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Ott"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dic"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Compresso: %i Non compresso: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Impossibile salvare permanentemente le opzioni: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Errore nella lettura del file di configurazione. Il file di configurazione precedente è archiviato in \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Discordanza opzione di configurazione: '%s' "
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Devi uscire da %s e reinstallarlo. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Impossibile trovare la traduzione per il linguaggio \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "File %s appartiene ad un altro torrent in esecuzione"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Il file %s è già esistente, ma non è un file valido"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lettura breve - qualcosa ha troncato i file?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formato del file di fastresume non supportato, forse da un'altra versione del client?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un altro programma sembra aver spostato, rinominato o cancellato il file, o %s potrebbe essere terminato in errore l'ultima volta che è stato eseguito."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Un altro programma sembra aver modificato il file, o %s potrebbe essere terminato in errore l'ultima volta che è stato eseguito."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Un altro programma sembra aver cambiato la dimensione del file, o %s potrebbe essere terminato in errore l'ultima volta che è stato eseguito."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Impossibile leggere i dati di fastresume:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "connessione rifiutata"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Hai chiesto di riusare di essere off durante il binding. Mi spiace, non posso farlo."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"listen_forever() dovrebbe essere chiamato solo una volta per ogni reattore."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() potrebbe non rispondere fino a che c'è attività, e potrebbe non processare l'evento che desideri. Usa listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "dati errati nel responsefile - totale troppo piccolo"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "dati errati nel responsefile - totale troppo grande"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "sto controllando il file esistente"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 o le informazioni fastresume non coincidono con lo stato del file (dati mancanti)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Errate info di fastresume (i file contengono più dati)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Errate info di fastresume (valore illegale)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "dati corrotti sul disco - forse hai due copie in esecuzione?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"comunicato file come completo all'avvio, ma una parte ha fallito il controllo hash"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Impossibile impostare il gestore del segnale: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "abbandonato \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "aggiunto \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "in attesa del controllo hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "sto scaricando"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Rilettura del file di configurazione"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Non puoi specificare il nome del file .torrent quando stai generando più torrent multipli in una sola volta"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "La codifica del filesystem \"%s\" non è supportata in questa versione"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Impossibile convertire il nome file/cartella \"%s\" in utf-8 (%s). O la codifica del filesystem assunta \"%s\" è errata o il nome del file contiene byte illegali."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Il nome file/cartella \"%s\" contiene valori unicode riservati che non corrispondono a caratteri."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Impossibile leggere la cartella"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Impossibile generare statistiche"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "rimozione %s (verrà riaggiunto)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**avviso** %s è un torrent duplicato per %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**avviso** %s contiene errori"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... riuscito"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "rimozione %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "controllo completato"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Impossibile generare statistiche %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"%s\nnon ha potuto trasferire o aprirsi. Prova ad usare un browser web per scaricare il file torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Richiesto Python %s o successivo"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+"Troppo in ritardo per commutare backend RawServer, %s è stato già utilizzato. "
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Annuncio tracker non ancora completo %d secondi dopo averlo avviato"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema nel connettersi al tracker, gethostbyname fallito - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema nel connettersi al tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dati errati dal tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rifiutati dal tracker - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Sto interrompendo il torrent poiché è stato rifiutato dal tracker mentre non era connesso a nessuna fonte."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Messaggio dal tracker: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "avviso dal tracker - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Ricerca Trackerless fallita:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo errata - non è un dizionario"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo errata - chiave parti errata"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo errata - lunghezza parte illegale"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo errata - nome errato"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "il nome %s non permesso per ragioni di sicurezza"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "mix file singolo/multiplo"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo errata - lunghezza errata"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo errata - \"file\" non è una lista di file"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo errata - il nome del file deve essere un \"dict\""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo errata - percorso errato"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo errata - percorso cartella errato"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "il percorso %s non permesso per ragioni di sicurezza"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo errata - percorso duplicato"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo errata - nome usato per entrambi i nomi del file e della sottocartella"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo errata - tipo oggetto errato"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo errata - nessuna stringa URL di annuncio"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo errata - il nodo non è una lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "metainfo errata - la lista del nodo deve avere solo due elementi"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "metainfo errata - l'host del nodo deve essere una stringa"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "metainfo errata - la porta del nodo neve essere un numero intero"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "il motivo dell'errore deve essere una stringa"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "il messaggio di avviso deve essere una stringa"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"elemento non valido nella lista delle fonti - l'info della fonte deve essere un \"dict\""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"elemento non valido nella lista delle fonti - l'IP della fonte deve essere una stringa"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"elemento non valido nella lista delle fonti - la porta della fonte deve essere un numero intero"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "elemento non valido nella lista delle fonti- ID fonte non valido"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista fonti non valida"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "intervallo annuncio non valido"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "intervallo annuncio minimo non valido"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "tracker id non valido"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "conteggio fonti non valido"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "conteggio fonti complete non valido"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "entrata \"last\" non valida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Utilizzo: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPZIONI] [CARTELLATORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Se un argomento non-opzione è presente è preso come\nil valore dell'opzione torrent_dir .\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPZIONI] [FILESTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPZIONI] [FILETORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPZIONE] URL_TRACKER FILE [FILE]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "gli argomenti sono -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (default a "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "chiave sconosciuta "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parametro passato alla fine senza valore"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "analisi della linea di comando fallita su "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "E' necessaria l'opzione %s."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Devi fornire almeno %d argomenti."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Troppi argomenti - %d massimo."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "formato errato di %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Porta in ascolto."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "file nel quale immagazzinare le informazioni dello scaricatore"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tempo di scadenza per le connessioni in chiusura"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "secondi tra i salvataggi del dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "secondi tra le scadenze degli scaricatori"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "secondi che gli scaricatori dovrebbero attendere tra i riannunci"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"numero predefinito di reti cui inviare un messaggio info se il client non specifica un numero"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "tempo da attendere tra i controlli se le connessioni sono scadute"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"quante volte controllare se uno scaricatore è dietro NAT (0 = non controllare)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "se aggiungere entrate al registro per i risultati di controllo-nat"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"tempo minimo che deve passare dall'ultima pulizia prima di poterne effettuare un'altra"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"tempo minimo in secondi prima che la cache sia considerata vecchia e sia ripulita"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"permetti solamente lo scaricamento dei .torrent in questa cartella (e ricorsivamente nelle sottocartelle delle cartelle che non contengono file .torrent). Se impostato, i torrent in questa cartella appariranno nella pagina info/scrape a seconda che abbiano fonti oppure no"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permetti chiavi speciali nei torrent nella allowed_dir per influire sull'accesso al tracker"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "se riaprire il file di registro alla ricezione di un segnale HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"se mostrare una pagina di informazioni quando la cartella principale del tracker è caricata"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "un URL verso il quale redirigere la pagina di informazioni"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "se mostrare i nomi dalla cartella permessa"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"file contenente i dati x-icon da ritornare quando il browser richiede favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignora il parametro ip GET dalle macchine che non sono su IP della rete locale (0 = mai, 1 = sempre, 2 = ignora se il controllo NAT non è abilitato). Le intestazioni proxy HTTP che forniscono gli indirizzi dei client originali sono trattati allo stesso modo di --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"file usato per scrivere i registri dei tracker, usare - per standard output (default)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"usato con allowed_dir; aggiunge un url /file?hash={hash} che permette agli utenti di scaricare il file torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"mantieni i torrent estinti dopo che scadono (così che appaiano ancora sul tuo /scrape e pagina web). Significante solo se allowed_dir non è impostata"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "accesso scrape permesso (può essere nessuno, specifico o completo)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "numero massimo delle fonti da fornire con una richiesta"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"il tuo file potrebbe esistere altrove nell'universo\nma putrtroppo, non qui\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**avviso** file favicon specificato -- %s -- non esistente."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**avviso** file di stato %s corrotto; sto reimpostando"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Registro Avviato: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**avviso** impossibile redirezionare lo standard output al file di registro: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Registro riaperto: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**avviso** impossibile riaprire il file di registro"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "la funzione scrape specifica non è disponibile con questo tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "la funzione scrape completa non è disponibile con questo tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "la funzione get non è disponibile con questo tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Lo scaricamento richiesto non è autorizzato per l'uso con questo tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "eseguire senza argomenti per la spiegazione dei parametri"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Chiusura in corso: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Non si possono avviare due istanze separate dello stesso torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Nascondi %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Mostra %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "non è una stringa bencoded valida"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "valore bencoded non valido (dati dopo un prefisso valido)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport minore di minport - nessuna porta da controllare"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Impossibile aprire una porta di ascolto: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Impossibile aprire una porta di ascolto: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Controlla l'impostazione dell'intervallo delle porte."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Avvio iniziale"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Impossibile caricare i dati di fastresume :%s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Verrà eseguito un controllo completo sull'hash."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "la parte %d ha fallito il controllo hash, verrà scaricata nuovamente"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Tentativo di scaricare un torrent senza tracker con un client senza tracker disattivato."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "scaricamento fallito: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Errore IO: non c'è più spazio su disco, o impossibile creare un file così grande:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "terminato a causa di un errore IO:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "terminato a causa di un errore OS: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "terminato a causa di un'eccezione interna: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Errore addizionale durante la chiusura dovuto all'errore: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Impossibile rimuovere file fastresume dopo l'errore:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "distribuzione della fonte completa"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Impossibile scrivere dati fastresume: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "chiusura"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Questa sembra essere una versione di Python vecchia che non supporta il rilevamento della codifica del filesystem. Si assume per default 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Phyton ha fallito l'autorilevamento della codifica del filesystem. Al suo posto viene usato 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"La codifica del filesystem '%s' non è supportata. Al suo posto viene usato 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componente del percorso del file errato: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Questo file .torrent è stato creato con uno strumento errato ed ha i nomi dei file codificati incorrettamente. Alcuni o tutti i nomi dei file possono apparire diversi da quanto il creatore del file .torrent intendeva."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Questo file .torrent è stato creato con uno strumento errato ed ha valori dei caratteri errati che non corrispondono a nessun carattere reale. Alcuni o tutti i nomi dei file possono apparire diversi da quanto il creatore del file .torrent intendeva."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Questo file .torrent è stato creato con uno strumento errato ed ha i nomi dei file codificati incorrettamente. I nomi usati possono tuttavia essere esatti."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Il set di caratteri usato sul filesystem locale (\"%s\") non può rappresentare tutti i caratteri usati nel/nei nomi dei file di questo torrent. I nomi dei file sono stati cambiati rispetto all'originale."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Il filesystem di Windows non può gestire alcuni caratteri usati nei nomi dei file di questo torrent.I nomi dei file sono stati cambiati rispetto all'originale."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Questo file .torrent è stato creato con uno strumento errato ed ha almeno 1 file con un nome di directory o di file errato. Comunque siccome tutti quei file erano contrassegnati come aventi lunghezza 0, tali file sono stati semplicemente ignorati."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Comando non gestito: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Impossibile create il socket di controllo: già in uso"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+"Impossibile rimuovere il vecchio nome del file del socket di controllo:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Impossibile create il socket di controllo: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Impossibile inviare il comando: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex globale già creato"
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Impossibile trovare una porta aperta"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Impossibile creare la cartella di dati per l'applicazione"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Impossibile acquisire il lucchetto del mutex globale per il file di controlsocket"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "Una precedente istanza di BT non è stata cancellata correttamente. "
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+"Un'altra istanza di BitTorrent è in esecuzione, ma \"%s\" non esiste.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Proverò ad indovinare la porta."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Porta trovata: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Impossibile trovare la porta."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Stato IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Conversazione DDE connessa."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+"errore nella deregistrazione o nella chiusura del socket del server: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket del server persa"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Errore durante la gestione della connessione accettata:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Devo chiudere a causa dell'errore TCP stack flaking out. Per favore consultare le FAQ su %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "ricevuto tipo di messaggio sconosciuto"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "tempo di attesa"
+
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..e243fba
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,2769 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 15:53-0800\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %sまたは以降のバージョンをインストールしてください。"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "非推奨。使用しないでください。"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "別の%sプロセスと通信できませんでしたが、1つは実行中のようです。"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "%sウインドウをすべて閉じると、問題が解決する場合があります。"
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%sは既に実行中です。"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "別の%sプロセスと通信できませんでした。"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %sまたはそれ以降のものが必要です。"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "ドラッグして再配置"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "右クリックによるメニュー表示"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "ダイアルアップ"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/ケーブル128K以上"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/ケーブル256K以上"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768K以上"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "torrentのURL入力"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "開くtorrentファイルのURLを入力:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "最高アップロード速度:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "現在実行中のすべてのtorrentを一時的に中断"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "ダウンロードを再開"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "最新バージョン%sが利用できます。"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "バージョン%sより新しいバージョンがあります。\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "使用中のバージョンは%sです。最新バージョンは%sです。\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "最新バージョンは次のサイトからダウンロードできます。\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "後でダウンロード(_L)"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "今すぐダウンロード(_N)"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "後で通知(_R)"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "%sについて"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "β"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "バージョン%s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%sを開けませんでした"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "寄付"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s利用ログ"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "ログの保存場所:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "ログを保存しました"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "ログを消去しました"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%sの設定"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "一般"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Windows起動時にBitTorrentを起動する"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "システムトレイにアイコン化する"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "プログレスバーの文字を常に黒にする\n(再起動が必要)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "保存"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "新規ダウンロードの保存先:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "変更..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "ダウンロードするたびに保存先を指定"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "ダウンロード"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "新規torrentの起動時:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "実行中の別のtorrentがスペースを取らないようにする(_S)"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "他の実行中のtorrentを終了しない(_D)"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "毎回尋ねる(_A)"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "シード"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr "torrentを完了したシード:共有率が[_]パーセントに達するか、[_]分経過するまで、どちらか早いほう"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "シードを続ける"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "最後にtorrentを完了したシード:共有率が[_]パーセントに達するまで"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "ネットワーク"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "利用可能なポートの検索:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "開始するポート:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "自動ポートマッピングの有効化"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "トラッカーに報告するIP:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(トラッカーと同じローカルネットワーク\n 上にいない限り効果がありません)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "警告:この設定の変更により%sが正しく動作しなくなる可能性があります。"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "オプション"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "値"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "拡張"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "デフォルトのダウンロードディレクトリを選択"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "ショートカットを削除できませんでした: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "%sにあるファイル"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "行わない"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "ダウンロードしない"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "通常"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "通常ダウンロード"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "最初"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "最初にダウンロード"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "ファイル名"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "長さ"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "ダウン"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "行わない"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "最初"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "%sのピア"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IPアドレス"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "クライアント"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "接続"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/sでダウンロード"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/sでアップロード"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MBダウンロード"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MBアップロード"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "%完了"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s(推定)ピアダウンロード"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ピアID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "インタレスト"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "チョーク"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "スナッブ"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "オプティミスティックアップロード"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "リモート"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "ローカル"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "不良ピア"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d成功"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d失敗"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "接続禁止"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "成功"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "%sについての情報"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "torrent名:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(トラッカーなしtorrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URLの公表:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr "、1個のファイル"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr "、%d個のファイル"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "合計サイズ:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "ピース:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "情報ハッシュ:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "保存場所:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "ファイル名:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "ディレクトリを開く(_O)"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "ファイルリストの表示(_F)"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "torrent情報"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "torrentの削除"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "torrentの中止"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr "、%sのシード"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr "、シードを続けます。"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "完了、共有率: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "完了、%sアップロード済み"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "完了"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "torrent情報(_I)"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "ファイルリスト(_F)"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "ピアリスト(_P)"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "場所の変更(_C)"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "シードを続ける(_S)"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "再開(_S)"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "完了(_F)"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "削除(_R)"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "中止(_A)"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "\"%s\"を削除してよろしいですか?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "このtorrentにおける共有率は%d%%です。"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "このtorrentに%sをアップロードしました。"
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "このtorrentを削除しますか?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "完了"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "リストにドラッグするとシードされます"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "失敗"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "リストにドラッグすると再開します"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "待機中"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "停止中"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "実行中"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "現在のアップロード: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "現在のダウンロード: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "以前のアップロード: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "以前のダウンロード: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "共有率: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "ピア数%s、シード数%s。トラッカーからの合計: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "配布しているコピー: %d; 次のコピー: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "ピース: 合計 %d、完全 %d、不完全 %d、アクティブ %d (空 %d)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "不良ピース %d + 破棄したリクエスト %s"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% 完了、残り %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "ダウンロード率"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "アップロード率"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "該当なし"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%sが開始"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "終了(_Q)"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "終了(_X)"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "torrentファイルを開く(_O)"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "torrent URLを開く(_U)"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "torrentの新規作成(_N)"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "中断/再開(_P)"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "完了したtorrentの表示/非表示(_F)"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "ウィンドウのリサイズ(_R)"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "ログ(_L)"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "設定(_S)"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "バージョン情報(_A)"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "寄付(_D)"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "ファイル(_F)"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "表示(_V)"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "torrentの検索"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(中断)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(複数)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "既に%sインストーラをダウンロードしています。"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "新しい%sをインストールしますか?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "%sを終了し、新しいバージョンの%sをインストールしますか?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%sについてのヘルプは\n%sを参照してください。\n今すぐ表示しますか?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "ヘルプページを表示しますか?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "リストには完了したtorrentが1個あります。"
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "削除してもよろしいですか?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "リストには完了したtorrentが%d個あります。"
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "それらをすべて削除してもよろしいですか?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "完了したtorrentをすべて削除しますか?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "完了したtorrentはありません。"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "完了して削除できるtorrentはありません。"
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "torrentを開く:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "保存場所を次の場所に変更 "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "ファイルは既に存在します!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\"は既に存在します。別のファイル名にしますか?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "保存場所 "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "ディレクトリは既に存在します!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr "\"%s\"は既に存在します。既存のディレクトリ内に同じディレクトリを作成しますか?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(全般): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%sエラー"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "複数のエラーが発生しました。[OK]をクリックするとエラーログが表示されます。"
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "実行中のtorrentを中断しますか?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "\"%s\"を実行しようとしています。実行中の別のtorrentも中止しますか?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "これまでに寄付されたことはありますか?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "新しいバージョン%sです。寄付を考えてみては?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "ありがとうございます!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr "寄付をありがとうございました! 再度寄付していただける場合は、[ヘルプ]メニューの[寄付]を選択してください。"
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "TorrentQueueを開始できませんでした。エラーについては上記を参照してください。"
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrentファイル作成者 %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "このファイル/ディレクトリのtorrentファイルを作成する:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "選択..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(ディレクトリはバッチtorrentになります)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "ピースのサイズ:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "トラッカーの使用(_T):"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "DHTの使用(_D):"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "ノード(オプション):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "コメント:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "作成(_M)"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "ホスト(_H)"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "ポート(_P)"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "torrentを作成中..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "ファイルサイズをチェック中..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "シードの開始"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "作成中"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "完了"
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "torrentの作成が完了しました。"
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "エラー!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "torrent作成中のエラー:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %sまたはそれ以降が必要です"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d日"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1日と%d時間"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d時間"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d分"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d秒"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0秒"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%sヘルプ"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "よくある質問(FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "実行"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "フォルダを選択してください..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "すべてのファイル"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "torrent"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "新規フォルダの作成..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "ファイルの選択"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "フォルダの選択"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "保存した状態ファイルをロードできませんでした:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "UIの状態を保存できませんでした:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "状態ファイルの内容が不正です。"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "\"%s\"ファイルの読み取り中にエラーが発生しました。"
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "状態を完全に復元できません"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "状態ファイルの内容が不正です(重複するエントリ)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "\"%s\"のデータが破損しています。torrentを復元できません。"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(情報ハッシュが一致しません)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "状態ファイルが不正です(不良エントリ)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "UI状態ファイルが不良です。"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "UI状態ファイルのバージョンが不良です。"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "サポートされていないバージョンのUI状態ファイル(新規クライアントのバージョンから?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "キャッシュされた%sファイルを削除できませんでした:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "これは有効なtorrentではありません。(%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "このtorrent(または同じ内容のもの)は既に実行中です。"
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "このtorrent(または同じ内容のもの)は既に実行待ちの状態になっています。"
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "torrentが不明な状態の%dになっています。"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "ファイルが書き出せませんでした。"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrentはクライアント再起動後、正常に再起動しません。"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr "%dを超えるtorrentは同時に実行できません。詳細は、%sのFAQを参照してください。"
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr "他のtorrentが実行待ちの状態になっており、このtorrentはシード中断の設定に一致したため、開始しません。"
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr "このtorrentは、最後に完了したtorrentのシードを中断する設定に一致したため、開始しません。 "
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "%sから最新バージョンを得られませんでした。"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "%sから最新バージョンの文字列をパースできませんでした。"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "%s %sインストーラを一時的に保存する適当な場所が見つかりませんでした。"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "%s %sインストーラのtorrentファイルは利用できません。"
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %sインストーラが不完全、失われている、または破損してように見えます。"
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "このOSでインストーラを開始できません。"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "torrentがありません"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "ダウンロードの開始"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "正常に実行中"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "ダウンロードに時間がかかる場合があります:\nおそらくファイヤウォール/NATが有効になっているためです。"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "ネットワーク接続の確認"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"高速再開に関する情報やGUIの状態など、可変データを保存するディレクトリ。bittorrent configディレクトリのdataサブディレクトリにデフォルト設定されます。"
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"ローカルファイルシステムで使用される文字エンコーディング。空白にしておくと、自動検出されます。python 2.3より前のバージョンでは、自動検出は作動しません。"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "使用するISO言語コード"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr "トラッカーに報告するIP(トラッカーと同じローカルネットワーク上にいない限り効果がありません)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr "クライアントがローカルでリッスンするポートと異なる場合、グローバルに表示されるポート番号。"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "リッスンする最小数のポート。利用不可の場合はカウントアップされます。"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "リッスンする最大数のポート。"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ローカルでバインドするIP。"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "表示情報を更新する間隔(秒)。"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "さらにピアをリクエストするまでに待機する時間(分)。"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "リクエストし直さないピアの最少数。"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "新規接続の開始を中断するピアの数。"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "不完全な送信接続の最大数"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr "この新しい受信接続が終了した直後に許可される最大接続数。"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "ディスクのハッシュをチェックするかどうか。"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "アップロード速度の最大KB/s。0は無制限を示します。"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "余分なオプティミスティックアンチョークで満たされるアップロード数。"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr "複数ファイルtorrentの中から一度に開き続けるファイルの最大数。0は無制限を示します。ファイル記述子の不足を避けるために使用します。"
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr "トラッカーのないクライアントを開始します。トラッカーのないtorrentをダウンロードするために有効にしておく必要があります。"
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "次のキープアライブを送信するまでに一時停止する時間(秒)。"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "リクエスト1つあたりのクエリーバイト数。"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr "ワイヤー上で受け入れる接頭部エンコーディングの最大長。値が大きくなると、接続が中断されます。"
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "何も受信していない終了ソケットを待機する時間(秒)。"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "接続がタイムアウトしたかどうかをチェックする間隔(秒)。"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr "ピアに送信する最大のスライス長。大きいサイズのリクエストを受け取った場合は接続が中止されます。"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "現在のアップロード率とダウンロード率を推定する最大の間隔。"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "現在のシード率を推定する最大の間隔。"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "アナウンスが成功しない場合に、再試行するまでの最長待機時間。"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr "半永久的にチョークされていることを想定する前に、接続上で受け取るデータを待機する時間(秒)。"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "ランダムからレアレストファーストに切り替える際のダウンロード数。"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "ネットワークバッファに一度に書き込むバイト数。"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr "故障したピアまたは意図的に敵意を示すピアが不正なデータを送信してくる場合に、そのアドレスからの接続を今後拒否します。"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "同じIPアドレスを持つ複数のピアに接続しません。"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "0以外の場合、ピア接続のTOSオプションをこの値に設定します。"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr "ファイルの読み込みが大変遅くなるBSD libcのバグ対策を有効にします。"
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "トラッカー接続に使用するHTTPプロキシのアドレス。"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "RSTとの接続を終了し、TCP TIME_WAIT状態を回避します。"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"ネットワーク接続にツイストネットワークライブラリを使用します。1はツイストを使用すること、0は使用しないこと、-1は自動検出とツイストが優先されることを示します。"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"torrentを保存するファイル名(1つのファイルtorrentの場合)またはディレクトリ名(バッチtorrentの場合)で、torrentのデフォルト名を上書きします。--save_inも参照。いずれも指定していない場合、ユーザーは場所を保存するよう指示されます。"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "拡張ユーザーインターフェイスの表示"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "シードを中止するまでに完了したtorrentをシードする最長時間(分)。"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr "シードを中止するまでに達成する最小のアップロード/ダウンロード率(%)。0は無制限を示します。"
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr "最後のtorrentのシードを中止するまでに達成する最小のアップロード/ダウンロード率(%)。0は無制限を示します。"
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "ユーザーがキャンセルするまで完了したtorrentをシードし続けます。"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "ユーザーがキャンセルするまで完了した最後のtorrentをシードし続けます。"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "一時停止状態でダウンローダを開始します。"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"ユーザーが手動で別のtorrentを開始した場合のアプリケーションの動作を指定します。「交換」は実行中のtorrentを常に新しいtorrentに置き換えることを示し、「追加」は実行中のtorrentを追加して同時に実行することを示し、「尋ねる」は毎回ユーザーに尋ねることを意味します。"
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "最小化されたBitTorrentの開始"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr "httpバージョンチェックで提供されたバージョンを上書きし、バージョンチェックのデバッグモードを有効にします。"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr "バージョンチェックで使用された現在のバージョンを上書きし、バージョンチェックのデバッグモードを有効にします。"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "ウィンドウのサイズと位置をWIDTHxHEIGHT+XOFFSET+YOFFSEの形式で指定します。"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"torrentを保存するファイル名(1つのファイルtorrentの場合)またはディレクトリ名(バッチtorrentの場合)。torrentのデフォルト名を上書きします。--save_inも参照。"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"一度に許可されたアップロードの最大数。-1は--max_upload_rateに基づいた適度な数です。自動値は、一度にtorrentを1つ実行している場合にのみ実用的です。"
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"torrentの内容が保存されるローカルのディレクトリ。ファイル(1つのファイルtorrentの場合)またはディレクトリ(バッチtorrentの場合)は、.torrentファイルで指定したデフォルトの名前を使って、このディレクトリ内に作成されます。--save_asも参照。"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "ダウンロードしたファイルを保存する場所を尋ねるかどうか。"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"--saveas_styleによって指定された名前を使ってtorrentが保存されるローカルのディレクトリ。これを空白にしておくと、torrentは対応する.torrentファイルのディレクトリ内に保存されます。"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "torrentディレクトリが再スキャンされる頻度(秒)。"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr "トラッカーとの競争を避けるため、torrentに気付いたら実行する前にこれだけの秒数待ちます。"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"torrentダウンロードに名前を付ける方法: 1) torrentファイル名を使用する(torrentは含めない)。2) torrentファイルにエンコードされている名前を使用する。3) torrentファイル名(torrentは含めない)を使ってディレクトリを作成し、torrentファイルにエンコードされた名前を使って、そのディレクトリに保存する。4) torrentファイル名(torrentは含めない)およびtorrentファイルにエンコードされた名前が同じ場合は、1/2の名前を使用する。それ以外は、3に従って中間のディレクトリを作成する。注意: オプション1と2は、警告なしでファイルを上書きすることがあり、セキュリティに問題がある場合があります。"
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "torrentごとに完全なパスまたはtorrentの内容を表示するかどうか。"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ".torrentファイルを探すディレクトリ(半再帰的)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "stdoutの診断情報を表示するかどうか。"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "ピースサイズを2の何乗にするか。"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "デフォルトのトラッカー名"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"偽の場合は、トラッカーなしをtorrentにし、URLをアナウンスする代わりに、<ip>:<ポート>の形で信頼性のあるノードを使用するか、ルーティングテーブルからノードを引き出すために空の文字列を使用します。"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "エラー:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "下り速度"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "上り速度"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "ファイル:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "サイズ:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "シード:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "ピア:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "エラー:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "エラー:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "サイズ"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "アップ"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "エラー:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "ファイル名: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "ファイルサイズ:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "ファイル:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "フォルダ名: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "コメント:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "月"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "火"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "水"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "木"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "金"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "土"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "日"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "1月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "2月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "3月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "4月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "5月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "6月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "7月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "8月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "9月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "10月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "11月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "12月"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "ダウンロード中"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "チェック済み"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "%sを読み込むことができませんでした"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr "%sをダウンロード, あるいは\n開くことができませんでした.\nウェブブラウザでtorrentファイルをダウンロードしてみてください."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "トラッカーへ接続中に問題が発生 - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "トラッカーにより拒否 - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "トラッカーからのメッセージ :"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "トラッカーから警告 - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "トラッカーのログを書き出すファイルを指定します。- を指定すると標準出力になります(デフォルト)。"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**警告** 指定されたファビコン(%s)は存在しません。"
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# ログの開始 :"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**警告** 標準出力を以下のログファイルにリダイレクトできません :"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# ログの再開 :"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**警告** ログファイルを再び開くことができません"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "最大ポートが最小ポートより少ないです - チェックするポートがありません"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr "IOエラー: ディスクに空きがない, またはファイルが大きすぎます: "
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "IOエラーにより終了:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "OSエラーにより終了:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "内部の例外により終了:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "失敗した後の高速レジューム用のデータを削除できません:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "シャットダウン"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "タイムアウト"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100644
index 0000000..55aff83
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,2876 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-08-28 01:48-0700\n"
+"Last-Translator: Aiet Kolkhi <aietkolkhi@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "გადააადგილეთ მაუსით პოზიციის შესაცვლელად"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "მენიუსათვის გამოიყენეთ მაუსის მარჯვენა ღილაკი"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "კავშირი სატელეფონო ხაზით"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL ან საკაბელო, 128 კილობიტი ან უფრო სწრაფი"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL ან საკაბელო, 256 კილობიტი ან უფრო სწრაფი"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768 კილობიტი ან უფრო სწრაფი"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1 გამოყოფილი ხაზი"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1 გამოყოფილი ხაზი"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1 გამოყოფილი ხაზი"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3 გამოყოფილი ხაზი"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3 გამოყოფილი ხაზი"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "შეიყვანეთ ტორენტის მისამართი (URL)"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "შეიყვანეთ გამოსაძახებელი ტორენტის ფაილის მდებარეობა (URL)"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "ატვირთვის მაქსიმალური სისწრაფე"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "დროებით შეაჩერე ყველა ტორენტი"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "გადმოტვირთვის გაგრძელება"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "გამოვიდა ახალი, %s ვერსია"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "გამოვიდა %s-ის ახალი ვერსია.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr ""
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr ""
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr ""
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr ""
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "ჩვეულებრივი რეჟიმი"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 0000000..5f7bbe6
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,2772 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 12:07+0900\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %s(이)나 그 이상 버전 설치"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "권하지 않으므로, 사용하지 않음"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "다른 %s 프로세스와 통신하는 데에 실패했으나 한 프로세스가 실행중인 것으로 보입니다."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "모든 %s 창을 닫으면 문제가 해결될 수 있습니다."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s이(가) 이미 실행 중입니다."
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "다른 %s 프로세스와 통신하는데 실패했습니다."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s(이)나 그 이상의 버전 필요"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "재정렬하려면 드래그합니다."
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "메뉴에서 오른쪽 마우스 버튼 클릭"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "전화연결"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Cable 128k up"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Cable 256k up"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k up"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1급"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1급"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1급"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3급"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Torrent URL 입력"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "열고자 하는 Torrent 파일의 URL 입력:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "최대 업로드 속도:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "진행중인 모든 Torrent 일시 중지"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "다운로드 재개"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "새로운 %s 버전이 사용가능합니다."
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "%s의 새로운 버전이 사용가능합니다.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "%s 버전을 사용중이며, 최신버전은 %s 입니다.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "다음에서 최신버전을 받을 수 있습니다.\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "나중에 다운로드"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "지금 다운로드"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "나중에 알림"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "%s 정보"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "베타버전"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "버전 %s "
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s을(를) 열 수 없음"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "기부"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s 활동 로그"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "다음에 로그 저장:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "로그 저장됨"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "로그 지워짐"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s 설정"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "일반"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Windows를 시작할 때 BitTorrent 실행"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "시스템 트레이에 최소화"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "진행률 표시기 텍스트는 항상 검은색으로\n(다시 시작해야 함)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "저장중"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "다음에 새 다운로드 저장:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "변경..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "새 다운로드마다 저장 위치 묻기"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "다운로드 중"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "새 torrent를 시작할 때:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "공간을 만들기 위해 실행중인 다른 torrent 중지(_S)"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "실행중인 다른 torrent 중지하지 않기(_D)"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "매 회마다 묻기(_A)"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "시드하고 있는 중"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr "완료된 Torrent 시드: 공유비율이 [_]%에 도달하거나 또는 [_]분 동안 먼저 도달할 때까지"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "무제한 시드"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "최종 완료된 Torrent 시드: 공유비율이 [_]%에 도달할 때까지"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "네트워크"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "사용 가능한 포트 찾기:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "다음 포트에서 시작:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "자동 포트 매핑 사용"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Tracker에게 알려줄 IP"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Tracker로서 같은 로컬 네트워크에 있는한\n아무런 영향을 받지 않음)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "경고 : 이 설정을 변경하게 되면\n%s의 정상적인 동작을 막게됩니다."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "옵션"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "값"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "고급"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "기본 다운로드 디렉터리 선택"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "다음 단축키를 제거하는데 실패:%s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "\"%s\"에 있는 파일"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "절대 안함"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "다운로드 하지 않음"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "보통"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "일반적인 다운로드"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "최우선"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "먼저 다운로드"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "파일명"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "길이"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "다운로드"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "절대 안함"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "최우선"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "\"%s\"에 대한 Peer"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP 주소"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "클라이언트"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "연결"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s 다운로드"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s 업로드"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB 다운로드 됨"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB 업로드 됨"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% 완료"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. Peer 다운로드"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "관심분야"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "막힘"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "중지됨"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "최적화된 업로드"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "원격"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "지역"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "잘못된 Peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d 확인"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d 잘못됨"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "금지됨"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "확인"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "\"%s\"에 대한 정보"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrent 이름:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(Tracker가 없는 Torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "공개 URL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", 1개의 파일에 있음"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", %d개의 파일에 있음"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "전체 용량:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "조각:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "정보 해쉬:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "저장 위치:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "파일명:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "디렉터리 열기(_O)"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "파일 목록 보기(_F)"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent 정보"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Torrent 제거"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Torrent 중단"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", %s에 대해 시드"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", 무제한으로 시드"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "완료, 공유율 : %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "완료, %s 업로드 됨"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "완료"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent 정보(_I)"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "파일 목록(_F)"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Peer 목록(_P)"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "위치 바꾸기(_C)"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "무제한 시드(_S)"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "다시 시작(_S)"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "완료(_F)"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "제거(_R)"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "중단(_A)"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "\"%s\"을(를) 정말로 제거하겠습니까?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "이 Torrent에 대한 공유율은 %d%% 입니다."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "이 Torrent에 대해 %s 업로드 되었습니다."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Torrent를 제거하겠습니까?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "완료됨"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "시드하려면 목록에서 드래그 합니다."
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "실패"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "다시 시작하려면 목록에서 드래그 합니다."
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "기다리는 중"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "일시 중지"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "진행중"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "현재 업로드: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "현재 다운로드: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "이전 업로드: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "이전 다운로드: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "공유율: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s Peer, %s 시드, Tracker로부터의 전체 : %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "배포된 카피수 : %d;다음 :%s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "조각: %d 전체, %d 완료, %d 일부, %d 활성화(%d 비어있음)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d 잘못된 조각 + %s 요청이 취소된 것"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% 완료되고, %s 남았습니다."
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "다운로드 속도"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "업로드 속도"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "해당없음"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s 시작되었음"
+
+#: bittorrent.py:2784
+msgid "_Quit"
+msgstr "멈춤(_Q)"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "종료(_X)"
+
+#: bittorrent.py:2788
+msgid "_Open torrent file"
+msgstr "Torrent 파일 열기(_O)"
+
+#: bittorrent.py:2789
+msgid "Open torrent _URL"
+msgstr "Torrent URL 열기(_U)"
+
+#: bittorrent.py:2790
+msgid "Make _new torrent"
+msgstr "새로운 Torrent 만들기(_N)"
+
+#: bittorrent.py:2793
+msgid "_Pause/Play"
+msgstr "일시 중지/재생(_P)"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "완료된 Torrent 보이기/숨기기(_F)"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "창 크기 조정(_R)"
+
+#: bittorrent.py:2801
+msgid "_Log"
+msgstr "로그(_L)"
+
+#: bittorrent.py:2804
+msgid "_Settings"
+msgstr "설정(_S)"
+
+#: bittorrent.py:2807 bittorrent.py:2823
+msgid "_Help"
+msgstr "도움말(_H)"
+
+#: bittorrent.py:2809
+msgid "_About"
+msgstr "정보(_A)"
+
+#: bittorrent.py:2810
+msgid "_Donate"
+msgstr "기부(_D)"
+
+#: bittorrent.py:2814
+msgid "_File"
+msgstr "파일(_F)"
+
+#: bittorrent.py:2819
+msgid "_View"
+msgstr "보기(_V)"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Torrent 검색"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(멈춤)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(배수)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "%s 설치가 이미 다운로드 중임"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "새 %s을(를) 지금 설치하겠습니까?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "%s을(를) 종료하고 새버전 %s을(를) 지금 설치하겠습니까?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s 도움말은 \n%s에 있습니다.\n이동하시겠습니까?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "도움말 홈페이지를 방문하시겠습니까?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "목록에 한 개의 완료된 Torrent가 있습니다."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "지우시겠습니까?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "목록에 %d개의 완료된 Torrent가 있습니다."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "모두 지우시겠습니까?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "완료된 Torrent를 제거 하시겠습니까?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "완료된 Torrent 없음"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "제거할 Torrent가 없습니다."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Torrent 열기:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "저장 위치 변경"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "파일이 존재합니다!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\"은(는) 이미 있습니다. 다른 파일을 선택하시겠습니까?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "저장 위치"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "디렉터리가 있습니다!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr "\"%s\"은(는) 이미 있습니다. 이 디렉터리 안에 중복해서 만들겠습니까?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(전체 메시지) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s 오류"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "여러 오류가 발생했습니다. 확인을 누르시면 오류 로그를 보실 수 있습니다."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "진행중인 Torrent를 중지하시겠습니까?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "\"%s\"을(를) 시작하려고 합니다. 실행중인 다른 torrent를 중지하시겠습니까?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "기부하였습니까?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "새버전 %s 입니다. 기부하였습니까?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "감사합니다!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr "기부에 감사합니다! 다시 \"기부\"하기 위해서, 도움말 메뉴에서 \"기부\"를 선택해 주십시오."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "TorrentQueue를 시작할 수 없습니다. 오류는 위를 참조하십시오."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s Torrent 파일 생성자 %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "다음 파일/디렉터리를 대상으로 Torrent 파일 만들기:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "선택하기..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(디렉터리는 배치 파일 형식의 Torrent 파일이 될 것입니다)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "조각 크기:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Tracker 사용:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "DHT 사용:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "노드(옵션):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "설명:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "생성(_M)"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "호스트"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "포트"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Torrent 만드는 중..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "파일 크기를 검사하는 중..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "시드 시작"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "만들기"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "완료."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrent 만들기가 완료되었습니다."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "오류!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Torrent 만들기 오류:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s(이)나 그 이상의 버전 필요"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d 일"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 일 %d 시간"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d 시간"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d 분"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d 초"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 초"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s 도움말"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "자주 묻는 질문(FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "가기"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "기본 폴더 선택..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "모든 파일"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrent"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "새 폴더 만들기..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "파일 선택"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "폴더 선택"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "저장된 상태를 로드할 수 없음:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "UI 상태를 저장할 수 없음:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "잘못된 상태 파일 내용:"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "\"%s\" 파일을 읽는 동안 오류가 발생했습니다."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "상태를 완전히 복구할 수 없음"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "잘못된 상태파일(같은 항목)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "\"%s\"에서 데이터가 손상되어 torrent를 복구할 수 없습니다."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(정보해쉬 불일치)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "잘못된 상태파일(잘못된 항목)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "결함있는 UI 상태 파일"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "결함있는 UI 상태 파일 버전"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "지원되지 않는 UI 상태 파일 버전(최신 프로그램인 경우)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "캐시된 %s 파일 삭제할 수 없음:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "유효한 Torrent 파일이 아닙니다.(%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "이 Torrent(또는 같은 내용)가 이미 실행중입니다."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "이 Torrent(또는 동일한 내용)가 실행을 기다리고 있습니다."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "알 수 없는 상태 %d의 Torrent"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "파일에 쓰기할 수 없음"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "클라이언트가 다시 시작할때 Torrent는 올바로 재시작되지 않을 것입니다."
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr "%d Torrent 이상을 동시에 실행할 수 없습니다. 보다 자세한 정보는 %s의 FAQ를 참조하십시오."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"다른 Torrent가 실행 대기 중이고 시드가 중단되었을 때 이미 설정 조건을 맞추었다면 Torrent를 시작할 수 없습니다. "
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr "마지막으로 완료된 Torrent가 시드를 중단하였을 때 이미 설정 조건을 맞추었다면 Torrent를 시작할 수 없습니다."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "%s에서 최신 버전을 가져올 수 없음"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "%s에서 새 버전 스트링을 분석할 수 없음"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "%s %s 설치를 저장할 적합한 임시 위치를 찾을 수 없습니다."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "%s %s 설치에 이용 가능한 Torrent 파일이 없습니다."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s 설치프로그램이 완전하지 않거나, 존재하지 않거나, 손상된 것 같습니다."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "현재 OS에서 설치를 시작할 수 없음"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Torrent 없음"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "다운로드 시작"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "정상적으로 실행중"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "다운로드 속도가 느립니다:\n방화벽이나 NAT가 사용된 것 같습니다."
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "네트워크 연결 확인"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"fastresume 정보 및 GUI 상태가 저장된 여러 데이터가 있는 디렉터리입니다. BitTorrent 구성 디렉터리의 하위 디럭터리 '데이터'가 기본값입니다. "
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"문자 인코팅은 로컬 파일 시스템에서 사용됩니다. 비워둔 경우, 자동 감지됩니다. 자동 감지 기능은 Python 2.3 이하 버전에서는 사용할 수 없습니다."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "사용할 ISO 언어 코드"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr "Tracker에게 알려줄 IP(Tracker로서 동일한 로컬 네트워크에 있는 동안에는 아무런 영향을 받지 않음)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr "클라이언트가 로컬에서 수신한 것과 다른 경우 World-Visible 포트 번호 "
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "사용할 수 없는 경우 수신, 수량 확인을 위한 최소 포트"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "수신을 위한 최대 포트"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "로컬에 바인드하기 위한 IP"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "표시된 정보 업데이트에 소요된 초"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "보다 많은 Peer 요청 대기에 소요된 분"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "재요청되지 않은 Peer의 최소 수"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "새 연결 초대 중 중지된 Peer의 수"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "내보낼 완전하지 않은 연결의 최대수"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr "새로 들어오는 연결이 즉시 종료된 후 허락된 연결의 최소 수"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "디스크에 해쉬를 확인하는지 여부"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "업로드할 때 최소 kB/s, 0는 제한 없음을 의미함 "
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "추가의 Optimistic unchoke를 채우기 위한 업로드 수"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"한번에 여러 Torrent 파일을 열기 할 때 최소 파일 수, 0은 제한 없음을 의미합니다. 파일 설명자 실행을 피하기 위해 사용됩니다."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr "Tracker 없는 클라이언트를 초기화하십시오. Tracker 없는 Torrent를 다운로드하려면 사용되어야 합니다."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "Keepalives를 전송하는 중 일시 중지된 초의 횟수"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "요청 마다 쿼리된 바이트 수"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr "연결이 끊겨 더 큰 값을 전선을 통해 받아드리게 된 경우 최대 길이의 접두사 인코딩"
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "아무 것도 받지 않은 소켓 종료 대기시 소요된 초"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "시간 초과된 연결 확인 대기시 소요된 초"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr "큰 요청을 받아 연결을 종료할 경우 Peer 전송을 위한 최대 길이의 슬라이스"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "현재 업로드 속도와 다운로드 속도로 예상되는 최대 시간 간격 "
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "현재 시드 속도로 예상되는 최대 시간 간격"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "실패할 경우 공개 재시도를 기다리는 동안 소요된 최대 시간"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr "semi-permanently가 초크된 것을 가정하기 전 연결을 통해 오는 데이터를 기다리는 동안 소요된 초"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "Random에서 Rarest First로 전환될때 다운로드 수"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "한 번에 네트워크 버퍼에 쓰여진 바이트 수"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr "주소가 손상되었거나 올바르지 않은 데이터를 보내는 의도적 악의성 Peer의 경우, 향후 연결을 거절합니다."
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "동일한 IP 주소를 가진 여러 Peer에 연결하지 않음"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "0이 아닌 경우, 이 값에 Peer 연결을 위해 TOS 옵션 설정"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr "파일 읽기 속도를 낮추는 BSD libc 내의 버그 문제 해결이 가능합니다. "
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "Tracker 연결에 사용되는 HTTP 프록시 주소"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "RST와의 연결을 종료하고 TCP 시간 대기 상태를 피합니다."
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"네트워크 연결에 트위스티드 네트워크 라이브러리를 사용합니다. 1은 트위스티드 사용을, 2는 사용안함을 의미하고, -1은 자동 감지 및 트위스티드 선호를 의미합니다. "
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"Torrent의 기본명을 무시하고 파일명(단일 파일 Torrent) 또는 디렉터리명(배치 Torrent)으로 다른 Torrent 이름으로 저장합니다. 사용자가 저장 위치 질문에 대해 특별 설정이 없다면 --저장 위치를 참조합니다. "
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "고급 사용자 인터페이스 표시"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "시드를 중단하기 전 완료된 Torrent의 시드에 소요된 분의 최대 수"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr "시드를 중단하기 전 도달한 현재 최소 업로드 속도/다운로드 속도입니다. 0은 제한 없음을 의미합니다."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr "마지막 Torrent의 시드를 중단하기 전 도달한 현재 최소 업로드 속도/다운로드 속도입니다. 0은 제한 없음을 의미합니다."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "각 완료된 Torrent의 무제한 시드 (사용자가 취소할 때 까지)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "마지막 Torrent의 무제한 시드 (사용자가 취소할 때 까지)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "중단 상태에서 다운로드 시작"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"사용자가 수동으로 다른 Torrent를 시작할 때 응용 프로그램으로 처리하는 방법 지정: \"대체\"는 항상 새 Torrent로 실행중인 Torrent를 교체하는 것을, \"추가\"는 항상 실행중인 Torrent를 동시에 추가함을, \"묻기\"는 매번 사용자에게 묻기를 의미합니다. "
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "BitTorrent 최소화하여 시작하기"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr "http 버전 검사에서 제공한 버전을 덮어쓰고 버전 검사 디버깅 모드 사용하기"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr "버전 검사에서 현재 사용되고 있는 버전을 덮어쓰고 버전 검사 디버깅 모드 사용하기"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "창의 크기와 위치를 다음 형식으로 지정:너비x높이xX오프셋xY오프셋"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"Torrent의 기본명을 무시하고 파일명(단일 파일 Torrent) 또는 디렉터리명(배치 Torrent)으로 다른 Torrent 이름으로 저장합니다. --저장 위치를 참조합니다."
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"한 번에 허용된 최대 업로드 수입니다. -1은 (바라건대) 최대 업로드 속도를 기준으로 한 적합한 수를 의미합니다. 자동 값은 한 번에 하나의 Torrent가 실행될 때만 적합합니다. "
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"Torrent 내용이 저장될 로컬 디렉터리입니다. 파일(단일 파일 Torrent) 또는 디렉터리(배치 Torrent)가 지정된 .torrent 파일로 기본명을 사용하여 이 디텍터리에 생성될 것입니다. --저장하기를 참조합니다."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "다운로드한 파일을 저장할 위치 묻기 여부"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"--다른 이름으로 저장하기 스타일에서 지정된 이름을 사용하여 Torrent가 저장될 로컬 디렉터리입니다. 각 Torrent가 비워져 있다면 해당되는 .torrent 파일의 디렉터리 아래에 저장될 것입니다. "
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "Torrent 디렉터리 재스캔 횟수, 단위는 초"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr "이것을 시작하기 전에 트렉커의 추적을 피하기 위해 torrent를 알린 후 수초간 기다리십시오"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"다운로드한 Torrent 이름 지정: 1: Torrent 파일(마이너스 .torrent) 이름 사용, 2: 인코드된 IN Torrent 파일 이름 사용, 3: torrent 파일(마이너스 .torrent) 이름의 디렉터리 생성 및 인코드된 IN torrent 파일 이름을 사용하는 디렉터리에 저장, 4: torrent 파일(마이너스 .torrent) 이름과 인코드된 IN torrent 파일 이름이 동일하다면 그 이름(스타일 1/2)을 사용하거나, 스타일 3 내에 중간 디렉터리를 생성, 주의: 옵션 1과 2는 경고와 현재 보안 문제의 알림 없이 파일을 덮어쓸 수 있습니다. "
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "전체 경로를 표시하거나 각 Torrent의 내용 표시"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ".torrent 파일 검색을 위한 디렉터리(semi-recursive)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "Stdout에 진단 정보 표시 여부"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "2개 중 조각 크기를 설정하는 파워"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "기본 Tracker 이름"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"공개 URL 대신에 Tracker 없는 Torrent 만들기가 잘못되었다면, <ip>:<port> 형식의 안전한 노드를 사용하거나 라우팅 표에서 몇몇 노드를 끌어오기 위해 비어있는 스트링을 사용합니다. "
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "다운로드 완료!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<알 수 없음>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "%d:%02d:%02d 완료됨"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "완료된 다운로드"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB 업로드 / %.1f MB 다운로드)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB 업로드 / %.1f MB 다운로드)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "지금 %d 보이며, 배포된 복사본 이 추가적으로 %d 있습니다 (%s)."
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d 는 복사본들을 배포했습니다. (다음: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d 는 지금 보입니다."
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "오류:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "저장중:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "파일 크기:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "완료된 비율:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "남은 시간"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "다음 대상에 다운로드:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "다운로드 비율:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "업로드 비율:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "공유 비율:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "시드 상태:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "피어 상태:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "여러분은 --save_as 나 --save_in 모두 지정할 수 없습니다."
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "강제 종료"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "설정파일 읽기 중 오류:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ".torrent 파일 읽기 중 오류:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ".torrent 파일을 지정해야만 합니다."
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "텍스트모드 GUI 초기화가 실패했습니다. 진행할 수 없습니다."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"이 다운로드 인터페이스는 표준 Python 모듈 \"curses\"를 필요로 합니다.안타깝게도 Phthon의 네이티브 윈도우즈 포트에 사용가능한 것이 아닙니다.그러나 모든 Win32 시스템에서 작동하는 Python 의 Cygwin 포트는 사용가능합니다.(www.cygwin.com)"
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "여러분은 다운로드 하기 위해 아직 \"bittorrent-console\"을 사용할 것입니다."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "파일:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "크기:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "대상:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "진행:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "상태:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "다운로드 속도:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "업로드 속도:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "공유:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "시드:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "피어:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "현재 %d 가 보이며, 배포된 복사본 을 %d 추가합니다. (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "오류(들):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "오류:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# 업로드 다운로드 완료된 IP 속도"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "%d 조각을 다운로드 중, %d 조각을 갖고 있음, %d 의 조각이 완료됨. (전체 %d)"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "이 오류는 실행 중 발생되었습니다:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "사용법: %s 트랙커_URL [Torrent파일 [Torrent 파일 ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "%s에 대한 오래된 선언: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "torrent가 없습니다."
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "시스템 오류 - 예외 발생"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "경고:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "디렉터리가 아닙니다."
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "오류: %s\n파라메터 설명에 대한 인자가 없이 실행합니다."
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\n예외:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..d5db85d
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,2884 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-12-16 12:49-0800\n"
+"Last-Translator: Vaidas Kiela <vkiel@freemail.lt>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Įdieg Pyton %s ar aukštesnę versiją"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "nenaudokite, pasmerktas"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Uždarius visus %s langus gal pavyks pataisyti."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s jau veikia"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Reikia PyGTK %s ar naujesnio"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "tempk ir pakeisi rikiavimo eilę"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "dešinys mygtukas - meniu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "telefoninis modemas"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Įrašyk torrento adresą"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Nurodyk torrenta atidarymui"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Didžiausia išsiuntimo sparta"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Laikinai sustabdyti visus siunčiamus torrentus"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Pratęsti siuntimą"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Jau yra nauja %s versija"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Jau yra naujesne versija %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Jūs naudojate %s, naujesnė %s versija yra.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Visuomet galite gauti naujausią iš \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Parsiusk_vėliau"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Siųsk_dabar"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_primink man vėliau"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Apie %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "%s versija"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Negaliu atverti %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Paaukok"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s darbo įrašai"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Saugok įrašus:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "įrašai išsaugoti"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "įrašai išvalyti"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s nuostatos"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Eigos juostos tekstas vysuomet ryškus\n"
+" (reiks paleisti iš naujo)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Saugau"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Saugok naujus siuntimus ..."
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Pakeisti ..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Klausk kur saugoti kiekvieną naują siuntimą"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Parsiunčiu"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Tinklas"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Ieškok galimų prievadų:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Pradėk nuo prievado:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Pranešk IP sekliui:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Nieko nepakeis, nebent esate\n"
+" tame pat tinkle kaip ir seklys"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"DĖMESIO: Pakeitus šias nuostatas\n"
+" gali sutrikti tvarkingas %s darbas "
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Nuostata"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Dydis"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Sudetingos"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Pasirink numatytą parsiuntimų katalogą"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Rinkmenos \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Niekada nesisiųsk"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Rinkmena"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Ilgis"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adresas"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Programa"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Sujungimas"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s parsiuntimo"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s išsiuntimo"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "Parsiųsta MB"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "Išsiųsta MB"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% baigta"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Susidomėjęs"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Pasimetęs"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Paniekintas"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistiškas siuntimas"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "nutolęs"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "vietinis"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d gerai"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d blogas"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "uždraustas"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "gerai"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info apie \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrento vardas"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Saugok kataloge:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Rinkmena:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrento informacija"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Pašalink torentą"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Atsisakyk torento"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Baigta"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Baigta"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Nepavyko"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "perkelk į sąrašą kad tęstų"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Laukiu"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Sustabdyta"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Vykdau"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Parsiuntimo įvertinimas"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Išsiuntimo įvertinimas"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Nėra"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Ieškok torrentų"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(sustabdytas)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(keletas)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Aplankyk pagalbos tinklapį"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Baigtas vienas torrentas sąraše."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Ar nori jį pašalinti?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Ar nori visus pašalinti?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Pašalinti visus baigtus torrentus?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nėra baigtų torrentų"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nėra torrentų"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Veikiu įprastai"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/ml.po b/po/ml.po
new file mode 100644
index 0000000..f1fc1c3
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,2876 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-16 10:56-0700\n"
+"Last-Translator: Mannar Mathai <mannarmathai@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "Punakramekaranathinnu Neekkuka"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Pattika kittan Mouseil Valathu Vashathulla Button Amarthuka"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "Dial Cheyyukka"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Cable 128K Kooduthal"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Cable 256K Kooduthal"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k Kooduthal"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr ""
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr ""
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr ""
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr ""
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr ""
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr ""
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr ""
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr ""
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr ""
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr ""
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr ""
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr ""
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr ""
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr ""
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..0e4a026
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,2905 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-11-27 10:17-0800\n"
+"Last-Translator: Emirin Mohamed Kasah <emirinmkasah@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Pindah-pasang Python %s atau yang terkini"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "gagal, jangan guna"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Tutup semua %s tetingkap mungkin dapat membaikpulih masalah."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s sudahpun berfungsi"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyTGK %s atau yang terkini diperlukan"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "tekan-dan-tarik untuk susun semula"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "klik-kanan untuk menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dailup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "Pindah-hantar DSL/kabel 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "Pindah-hantar DSL/kabel 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "Pindah-hantar DSL 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Masukkan URL torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Masukkan URL torrent untuk buka:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Kadar pindah-hantar maksimum:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Menghentikan sementara semua torrent yang berfungsi"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Sambung pindah-terima"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Terdapat versi %s yang baru"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Adanya versi %s yang baru.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Anda menggunakan versi %s, dan versi terbaru adalah %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Anda boleh mendapatkan versi terbaru dari \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Pindah-terima kemudian"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Pindah-terima sekarang"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Ingatkan saya kemudian"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Mengenai %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versi %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Tidak boleh buka %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Derma"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Log Aktiviti"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Simpan log di:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "log telah disimpan"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "log telah dipadam"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Atucara"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Awam"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Lancarkan BitTorrent bila Windows dihidupkan"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Kecilkan ke tray sistem"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Text bar progres selalu hitam\n"
+" (memerlukan permulaan program semula)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Simpan"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Simpan pindah-terima yang baru di:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Tukar..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Tanya dimana pindah-terima yang baru mahu disimpan"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Sedang pindah-terima"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Benihkan"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Benihkan torrent yang tamat: sehingga peratusan mencecah [_], atau untuk [_] "
+"minit, yang mana terlebih dahulu."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Benihkan untuk selama-lamanya"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Benihkan torrent yang terakhir tamat: sehingga peratusan mencecah [_]."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rangkaian"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Cari port yang boleh digunakan:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "Mulakan di port:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP untuk dilaporkan ke tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(tiada kesan kecuali anda berada di\n"
+" dalam rangkaian tempatan yang sama dengan tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"AMARAN: Menukar setting ini boleh\n"
+" menyebabkan %s daripada berfungsi dengan sempurna."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Pilihan"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Nilai"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Pilihan canggih"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Pilih direktori pindah-terima asal"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Fail dalam \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Tidak sama sekali"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Jangan pindah-terima"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Biasa"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Pindah-terima secara normal"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Pertama"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Pindah-terima dahulu"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nama fail"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Panjang"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Pindah-terima"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "tidak sama sekali"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "pertama"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Rakan untuk \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Alamat IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klien"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Sambungan"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s terima"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s hantar"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB pindah-terima"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB pindah-hantar"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% lengkap"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s jangkaan pindah-terima dari rakan"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID Rakan"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Berminat"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Tersekat"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Abaikan"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Pindah-hantar optimistik"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "luar"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "tempatan"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "rakan jahat"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d baik"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d jahat"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "dilarang"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "baik"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Maklumat untuk \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nama torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent tanpa tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Url pengumuman:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", dalam satu fail"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", dalam %d fail"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Jumlah saiz:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Kepingan:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Maklumat hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Simpan di:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nama fail:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "Buka direktori"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Tunjuk senarai _fail"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Maklumat torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Alihkan torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Batalkan torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", akan dibenihkan selama %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", akan dibenihkan tanpa henti."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Tamat, peratusan: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Tamat, %s pindah-hantar"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Tamat"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Maklumat torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Senarai _fail"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Senarai rakan"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "Tukar tempat"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "Benih tanpa henti"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Mulakan semula"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "Tamat"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "Alihkan"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Batal"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Adakah anda pasti untuk mengalihkan \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Peratusan kongsi anda untuk torrent ini adalah %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Anda telah pindah-hantar %s untuk torrent ini."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Alihkan torrent ini?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Tamat"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "tekan-dan-tarik ke dalam senarai untuk benihkan"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Gagal"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "tarik ke dalam senarai untuk sambung"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Tunggu"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Berhenti seketika"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Berfungsi"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Kadar hantar terkini: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Kadar terima terkini: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Kadar hantar terdahulu: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Kadar terima terdahulu: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Kadar kongsi: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s rakan, %s benih. Jumlah dari tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Agihan salinan: %d; Seterusnya: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Kepingan: %d keseluruhan, %d lengkap, %d separa lengkap, %d aktif (%d kosong)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d kepingan buruk + %s dalam permintaan terabai"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% tamat, %s masih tinggal"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Kadar pindah-terima"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Kadar pindah-hantar"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s mula"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "Keluar"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "Buka fail torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Buka URL torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Buat torrent baru"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "Henti seketika/main"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Tunjuk/sorok torrent yang tamat"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Saizkan tetingkap untuk muat"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "Pilihan"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "Tolong"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "Mengenai"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "Derma"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "Fail"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Lihat"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Cari torrent"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(diberhentikan)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(pelbagai)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Sudahpun pindah-terima installer %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Install %s yang baru?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Adakah anda mahu keluar dari %s dan install %s yang baru?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"Panduan %s ada di \n"
+"%s\n"
+"Anda mahu ke sana sekarang?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Lawat laman panduan?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Ada satu torrent yang tamat di dalam senarai."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Adakah anda mahu mengalihkannya?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Terdapat %d torrent yang tamat di dalam senarai."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Adakah anda mahu mengalihkan kesemuanya?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Alihkan semua torrent yang telah tamat?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Tiada torrent yang tamat"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Tiada torrent yang tamat untuk dialihkan."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Buka torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Tukar lokasi simpanan untuk"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Wujud fail!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" wujud. Adakah anda mahu memilih nama fail yang lain?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Simpan lokasi untuk"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Direktori wujud!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" sudahpun wujud. Adakah anda mahu mengadakan direktori yang sama dan "
+"serupa di dalam direktori yang sedia ada?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(pesanan global): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Ralat %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Pelbagai ralat telah berlaku. Tekan OK untuk melihat log ralat."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Berhentikan torrent?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Adakah anda telah menderma?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Selamat datang ke versi baru %s. Adakah anda telah menderma?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Terima kasih!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr "Terima kasih kerana menderma!"
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Tidak boleh mulakan TorrentQueue, lihat atas untuk ralat."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s pencipta fail torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Buat fail torrent untuk fail/direktori ini:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Pilih..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Direktori akan menjadi \"batch\" torrent)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Saiz kepingan:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Guna tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Guna DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Sawat (pilihan):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komen:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "Cipta"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Bina torrent..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Semak saiz fail..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Mula pembenihan"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "bina"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Siap."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Siap membina torrent."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Ralat!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Ralat membina torrent:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK%s atau yang terkini diperlukan"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d hari"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 hari %d jam"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d jam"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minit"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d saat"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 saat"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Panduan"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Soalan Kerap Ditanya:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Pergi"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Pilih direktori..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Semua Fail"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrent"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Buat direktori yang baru"
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Pilih fail"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Pilih direktori"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Tidak boleh buka status yang telah disimpan:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Tidak boleh buka status UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Kandungan fail status tidak sah"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Ralat membaca fail \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "tidak boleh memulihkan status sepenuhnya"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Fail status tidak sah (data bertindih)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Data rosak dalam \"%s\", tidak boleh pulihkan torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(maklumat-hash tidak tepat)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Status fail tidak sah (data salah)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Status fail UI salah"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versi status fail UI salah"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "Versi status fail UI tidak disokong (versi pelanggan yang baru?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Tidak boleh padam cached fail %s:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Ini bukan torrent fail yang sah. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+"Torrent ini (atau yang mempunyai kandungan yang sama) sudahpun dijalankan."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Torrent ini (atau yang mempunyai kandungan yang sama) sudahpun bersedia "
+"untuk dijalankan."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Status torrent %d tidak diketahui"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Tidak boleh menulis fail"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"Torrent tidak boleh dijalankan dengan betul apabila program dijalankan semula"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Tidak boleh melancarkan lebih daripada %d torrent. Untuk maklumat tambahan "
+"sila lihat FAQ di %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"Tidak memulakan torrent kerana sudah ada torrent lain yang bersedia untuk "
+"dilancarkan, dan torrent ini sudahpun memenuhi syarat untuk dihentikan "
+"pembenihannya."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"Tidak memulakan torrent kerana ia sudahpun memenuhi syarat untuk berhenti "
+"pembenihan bagi torrent terakhir yang lengkap."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Tidak boleh mendapat versi terkini dari %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Tidak boleh memahami kod versi baru dari %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Tidak boleh mencari tempat sementara yang sesuai untuk menyimpan %s %s "
+"pindah-pasang."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Tiada fail torrent untuk pindah-pasang %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Tidak boleh melancarkan pindah-pasang di dalam OS ini"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Tiada torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Berfungsi seperti biasa"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/nb_NO.po b/po/nb_NO.po
new file mode 100644
index 0000000..6c2fd97
--- /dev/null
+++ b/po/nb_NO.po
@@ -0,0 +1,2848 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 17:51-0800\n"
+"Last-Translator: Olessia Laird <olessia@translate4me.com>\n"
+"Language-Team: Einangen <audun@einangen.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Norwegian Bokmal\n"
+"X-Poedit-Country: NORWAY\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installér Python %s eller nyere"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "foreldet, skal ikke brukes"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Kunne ikke kommunisere med en annen %s prosess, men det ser ut som en kjører."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Problemet kan kanskje løses ved å lukke alle %s vinduer."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s kjører allerede"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kunne ikke kommunisere med annen %s prosess."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s eller nyere kreves"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "dra for å endre rekkefølge"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "høyreklikk for meny"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "modem"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kabel 128k og over"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kabel 256k og over"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k og over"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Oppgi torrent-URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Oppgi URL til torrent-filen du vil åpne:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksimum opplastingshastighet:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Stopp alle torrents midlertidig"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Fortsett nedlasting"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Ny %s versjon tilgjengelig"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "En nyere versjon av %s er tilgjengelig.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Du bruker %s, og den nye versjonen er %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Du kan alltid få nyeste versjon fra \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Last ned _senere"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Last ned _nå"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Minn meg på det senere"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Om %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versjon %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Kunne ikke åpne %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donér"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s aktivitetslogg"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Lagre logg i:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "loggen er lagret"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "loggen er tømt"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Innstillinger"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Generell"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Start BitTorrent sammen med Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimér til systemstatuslinjen"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Fremdriftsindikatoren er alltid sort\n(omstart nødvendig)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Lagrer"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Lagre nye nedlastninger i:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Endre..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Spør hvor nye nedlastninger skal lagres hver gang"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Laster ned"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Når ny torrent startes:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Stopp en annen torrent som kjører for å lage plass"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Ikke stopp andre torrenter som kjører"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Spør hver gang"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Deler"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Del ferdige torrent: til delingsgrad når [_] prosent, eller i [_] minutter, velg det som slår til først."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Del ubegrenset"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Del sist fullførte torrent: til delingsgrad når [_] prosent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Nettverk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Se etter ledig port:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "starter på port: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Aktiver automatisk port-mapping"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP som rapporteres til tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Har ingen effekt hvis du ikke er på samme\nlokalnett som trackeren)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ADVARSEL: Endring av disse innstillingene kan\nhindre %s i å fungere korrekt."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Valg"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Verdi"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avansert"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Velg standard nedlastingsmappe"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Kunne ikke fjerne snarvei: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Filer i \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Aldri"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Aldri last ned"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Normal nedlastning"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Først"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Last ned først"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Filnavn"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lengde"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Nedlastinger"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "aldri"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "først"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers for \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-adresse"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Tilkobling"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s ned"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s opp"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB lastet ned"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB lastet opp"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% ferdig"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s beregnet peer-nedlastingshastighet"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessert"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Overbelastet"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Avvist"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistisk opplasting"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "fjern"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "dårlig peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d ødelagt"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "bannlyst"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info for \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentnavn:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent uten tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "AnnonseringsURL:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", i en fil"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", i %d filer"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Total størrelse:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Deler:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Infohash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Lagre i:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Filnavn:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Åpne mappe"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Vis _filliste"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrentinformasjon"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Fjern torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Avslutt torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", vil dele i %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", vil dele uendelig."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Ferdig, delingsforhold: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Ferdig, %s lastet opp"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Ferdig"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _informasjon"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Filliste"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peerliste"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Endre lagringssted"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Del ubestemt tid"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Om_start"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Gjør ferdig"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Fjern"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Avbryt"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Er du sikker på at du vil fjerne \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Delingsforholdet ditt for denne torrenten er %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Du har lastet opp %s til denne torrenten. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Fjern denne torrenten?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Ferdig"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "dra inn i listen for å dele"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Mislykket"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "dra inn i listen for å fortsette"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Venter"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pause"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Kjører"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Nåværende opp: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Nåværende ned: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Forrige opp: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Forrige ned: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Delingsforhold: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s klienter, %s deler. Totaler fra tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Distribuerte kopier: %d; Neste: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Deler: %d totalt, %d ferdig, %d delvis, %d aktive (%d tomme)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d ødelagte deler + %s i forkastede forespørsler"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% ferdig, %s gjenstår"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Nedlastingshastighet"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Opplastingshastighet"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "IT"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s startet"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Avslutt"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Lukk"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Åpne torrentfil"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Åpne torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Lag _ny torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pause/Kjør"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Vis/Gjem _ferdige torrents"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "_Tilpass vindusstørrelse"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Logg"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Oppsett"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Om"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donér"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fil"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Vis"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Søk etter torrent"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(stoppet)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(flere)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Laster allerede ned %s installasjonen"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installere ny %s nå?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Vil du avslutte %s og installere ny versjon, %s nå?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s hjelp finnes på \n%s\nVil du gå dit nå?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Gå til hjelpesiden?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Det er en fullført torrent i listen. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Vil du fjerne den?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Det er %d fullførte torrents i listen. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Vil du fjerne alle?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Fjerne alle fullførte torrents?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Ingen fullførte torrents"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Det er ingen fullførte torrents å fjerne."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Åpne torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Endre lagringssted for "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Filen eksisterer!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" eksisterer allerede. Vil du lagre under et annet navn?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Lagringssted for "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Mappe finnes allerede!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" finnes allerede. Vil du lage en identisk kopi i den eksisterende mappen?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(global melding) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Feil"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Det har oppstått flere feil. Trykk på OK for å se feilloggen."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Stoppe kjørende torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Du holder på å starte \"%s\". Vil du også stoppe en annen torrent som kjører?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Har du donert?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Velkommen til den nye versjonen av %s. Har du donert?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Takk!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Takk for din donasjon! For å gi mer, velg \"Donér\" fra menyen \"Hjelp\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Kunne ikke starte TorrentQueue, se ovenfor for feil."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrentfilmaker %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Lag torrentfil for denne filen/mappen:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Velg..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Mapper blir til flerfilstorrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Delstørrelse:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Bruk _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Bruk _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Noder (valgfritt):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Lag"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Vert"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Lager torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Kontrollerer filstørrelser..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Begynn deling"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "bygger opp "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Ferdig."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Ferdig med å lage torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Feil!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Feil mens torrents ble laget: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s eller nyere kreves"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dager"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dag %d timer"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d timer"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutter"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekunder"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekunder"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hjelp"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Ofte Stilte Spørsmål (FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Start"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Velg en eksisterende mappe..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alle filer"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Lag en ny mappe..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Velg fil"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Velg mappe"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Kunne ikke lese lagret status: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Kunne ikke lagre grensesnittets tilstand: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Ugyldig innhold i tilstandsfilen"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Feil ved lesing av filen \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "kan ikke gjenopprette tilstanden fullstendig"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ugyldig tilstandsfil (dobbel instans)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Korrupt data i \"%s\", kan ikke gjenopprette torrenten."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash feil)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ugyldig tilstandsfil (ugyldig instans)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Ugyldig tilstandsfil for grensesnitt"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Ugyldig versjon på tilstandsfilen for grensesnitt"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Ikke støttet versjon av tilstandsfil for grensesnitt (fra nyere klientversjon?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Kunne ikke slette midlertidig %s fil:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Dette er ikke en gyldig torrentfil. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Denne torrenten (eller en med likt innhold) kjører allerede."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Denne torrenten (eller en med likt innhold) venter allerede på å kjøre."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrenten er i en ukjent tilstand %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Kunne ikke skrive filen "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"torrenten vil ikke bli korrekt gjenopprettet ved neste oppstart av klienten"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Kan ikke kjøre mer enn %d torrents samtidig. For mer informasjon, se FAQ under %s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Starter ikke torrenten, ettersom det er andre torrents som venter på å starte, og denne allerede oppfyller kriteriene for når den skal slutte å deles ut."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Starter ikke torrenten, ettersom den allerede oppfyller kriteriene for når den siste torrenten skal slutte å deles ut."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Kunne ikke hente siste versjon fra %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Kunne ikke finne informasjon om ny versjon fra %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Kunne ikke finne en passende midlertidig plass å lagre %s %s installasjonen på."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Ingen torrentfil tilgjengelig for %s %s installasjonen."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"%s %s installasjonen ser ut til å være ufullstendig, korrupt, eller mangle."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Kunne ikke kjøre installasjonen på dette OS"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Ingen torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Starter nedlasting"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Kjører normalt"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Nedlasting kan gå tregt:\nSannsynligvis bak brannmur/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Sjekk nettverkskobling"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"mappe hvor variable data som hurtigfortsettelsesinformasjon og brukergrensesnitttilstand er lagret. Standard er undermappen 'data' i bittorrents config-mappe."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"tegnkoding brukt på det lokale filsystemet. Hvis tom, automatisk valgt. Automatisk valg fungerer ikke i Pythonversjoner eldre enn 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO språkkode som skal brukes"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ip-adresse å rapportere til trackeren (har ingen effekt hvis du ikke er på samme lokale nettverk som trackeren)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"portnummer synlig utenfra hvis det er forskjellig fra det klienten lokalt lytter på"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "laveste port å lytte på, teller oppover hvis utilgjengelig"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "høyeste port å lytte på"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "lokal IP å binde til"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekunder mellom oppdateringer av vist informasjon"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutter å vente mellom hver gang flere peers etterspørres"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minste antall peers for ikke å spørre igjen"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "antall peers før nye tilkoblinger ikke startes"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maks antall utgående ufullstendige koblinger"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maksimalt antall tilkoblinger tillatt, etter dette blir nye innkommende tilkoblinger stengt med en gang"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "om det skal kontrolleres hasher på disk"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maks kB/s å laste opp med, 0 betyr ingen grense"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"antall opplastinger å fylle opp til med ekstra optimistiske metoder for å unngå overbelastning"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"største antall filer i en flerfilstorrent som kan holdes åpne samtidig, 0 betyr ingen grense. Brukt for å unngå å gå tom for fildeskriptorer."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Start en trackerløs klient. Dette må være skrudd på for å laste ned trackerløse torrents."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"antall sekunder mellom hver gang et signal for å holde i live forbindelsen sendes ut"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "hvor mange tegn å spørre etter i hver forespørsel."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"største lengde på prefiks for koding du vil akseptere utenfra - større verdier fører til at forbindelsen forkastes."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "sekunder å vente før forbindelser ingenting er mottatt på stenges"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "sekunder å vente mellom hver sjekk etter forbindelser utgått på dato"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maksimal størrelse på biter å sende til peers, steng forbindelsen hvis en større forspørsel kommer"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "maksimum tidsinterval for å kalkulere opp- og nedlastingsrate"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "maksimum tidsinterval for å beregne delingsrate"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "maksimal tid å vente mellom hver annonsering hvis de stadig feiler"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"sekunder å vente på innkommende data over en forbindelse før man kan anta at den er delvis permanent overbelastet"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"antall nedlastinger før programmet endrer fra å velge tilfeldig nedlasting å begynne på til å velge den sjeldneste først"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "hvor mange tegn skal skrives til nettverksbuffere på en gang."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"avslå flere forbindelser fra adresser med ødelagte eller med vilje fiendtlige peers som sender ukorrekt data"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "ikke koble til flere peers som har samme IP-adresse"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "hvis ikke null, sett TOS for peerforbindelser til denne verdien"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"aktiver en omvei rundt en feil i BSD libc som gjør fillesing veldig treg."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adresse til en HTTP-mellomtjener for tracker-forbindelser"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "steng forbindelser med RST og unngå TCP TIME_WAIT tilstanden"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Bruk Twistet nettverksbiblioteker for nettverkstilkoblinger. 1 betyr bruk twistet, 0 betyr ikke bruk twistet, -1 betyr autovalg, og foretrekk twistet"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"filnavn (for enkeltfiltorrents) eller mappenavn (for flerfilstorrents) å lagre torrenten som. Overkjører standardnavnet i torrenten. Se også --save_in, hvis ingen av dem er spesifisert, blir brukeren spurt om lagringssted"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "vis avansert brukergrensesnitt"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"største antall minutter en ferdig torrent skal deles før deling stopper"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"minste opp-/nedlastingsforhold, i prosent, å oppnå før deling stopper. 0 betyr ingen grense."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"minste opp-/nedlastingsforhold, i prosent, å oppnå før deling av siste torrent stopper. 0 betyr ingen grense."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "Del hver fullstendig torrent på ubestemt tid (til brukeren avbryter)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Del siste torrent på ubestemt tid (til brukeren avbryter)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "start nedlasting i pauset tilstand"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"spesifiserer hvordan applikasjonen skal oppføre seg når brukeren manuelt prøver å starte en annen torrent: \"replace\" (erstatt) betyr alltid å erstatte den kjørende torrenten med en ny, \"add\" (legg til) betyr alltid legg til den kjørende torrenten i parallell, og \"ask\" (spør) betyr spør brukeren hver gang."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Start BitTorrent minimert"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"overstyr versjonen levert av http-versjonssjekken og skru på versjonssjekk debug-modus"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"overstyr versjonsnummer brukt i versjonssjekk og aktiver versjonssjekk debug-modus"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"oppgi vindusstørrelse og posisjon, i format:BREDDExHØYDE+XSTARTPOSISJON+YSTARTPOSISJON"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"filnavn (for enkelttorrents) eller mappenavn (for flere torrents) å lagre torrenten som, som overkjører standardnavnet i torrenten. Se også --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"maksimum antall opplastinger på en gang. -1 betyr (forhåpentligvis) et realistisk antall basert på --max_upload_rate. De automatiske verdiene er bare identifiserbare når kun en torrent kjøres av gangen."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"lokal mappe hvor torrentens innhold blir lagret. Filen (enkeltfiltorrents) eller mappen (flere torrents) vil bli laget i denne mappen med standardnavnet spesifisert i .torrentfilen. Se også --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"om det skal spørres etter et sted å lagre nedlastede filer i eller ikke"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"lokal mappe hvor torrentene vil bli lagret, navn bestemt av --saveas_style. Hvis denne er tom, vil hver torrent bli lagret under mappen til den tilsvarende .torrent-filen"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "hvor ofte skal torrentmappen sjekkes, i sekunder"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"vent så mange sekunder etter at en torrent ble oppdaget før den startes, for å unngå kamp med tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Hvordan skal torrentnedlastinger navngis: 1: bruk navnet PÅ torrentfilen (uten .torrent); 2: bruk navnet spesifisert I torrentfilen; 3: lag en mappe med navnet PÅ torrentfilen (uten .torrent) og lagre filene i den mappen med navn spesifisert I torrentfilen; 4: hvis navn PÅ torrentfilen (uten .torrent) og navnet spesifisert I torrentfilen er identiske, bruk det navnet (punkt 1/2), ellers lag en midlertidig mappe som i punkt 3; ADVARSEL: valg 1 og 2 kan skrive over filer uten advarsel, og kan føre til sikkerhetsproblemer."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "vis full sti eller innholdet i torrenten for hver torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "mappe å se etter .torrentfiler i (delvis rekursiv)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "om diagnostisk info skal vises på stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "hvilken toerpotens skal delens størrelse settes til"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "standard tracker-navn"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"hvis usann, lag en trackerløs torrent, i stedet for annonserings-URL, bruk en pålitelig node i form av <ip>:<port> eller en tom streng for å hente ut noen noder fra rutingtabellen din"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "nedlasting ferdig!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<ukjent>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "ferdig om %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "vellykket nedlasting"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB opp / %.1f MB ned)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB opp / %.1f MB ned)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d synlig nå, plus %d distribuerte kopier (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d distribuerte kopier (neste: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d synlig nå"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FEIL:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "lagrer: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "filstørrelse:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "prosent ferdig: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "gjenstående tid:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "last ned til: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "nedlastingshastighet: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "opplastingshastighet: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "forhold mellom opp- og nedlasting: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "delings-status: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peerstatus: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Du kan ikke spesifisere både --save_as og --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "avslutter"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Feil ved lesing av konfigurasjon: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Feil ved lesing av .torrentfil: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "du må oppgi en .torrentfil"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Oppstart av tekstbasert brukergrensesnitt mislyktes, kan ikke fortsette."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Denne nedlastingen krever Pythonmodulen \"curses\", som dessverre ikke er tilgjengelig for Windowsversjonen av Python. Den er derimot tilgjengelig for Cygwinversjonen (www.cygwin.com) av Python, som kjører på alle win32-systemer."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Du kan fortsatt bruke \"bittorrent-console\" for nedlasting."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fil:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "størrelse:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "mål:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "fremgang:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "nedl. hastighet:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "oppl. hastighet:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "deler:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "utdelinger:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d synlige nå, plus %d distribuerte kopier (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "feil:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "feil:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Opplasting Nedlasting Ferdig Hastighet"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "laster ned %d deler, har %d biter, %d av %d deler ferdig"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Disse feilene oppstod under kjøring:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Bruk: %s TRACKER_URL [TORRENTFIL [TORRENTFIL ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "gammel annonsering av %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "ingen torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEMFEIL - UNNTAK OPPSTÅTT"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Advarsel: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " er ikke en mappe"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "feil: %s\nkjør uten argumenter for forklaring på parametrene"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nUNNTAK:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Du kan fortsatt bruke \"btdownloadheadless.py\" til nedlasting."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "kobler til peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Antatt ferdig om %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Størrelse"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Opplastinger"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totalt:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s peers %s utdelinger %s distribuerte kopier - %s ned %s opp"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "feil: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nkjør uten argumenter for forklaring på parametrene"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "valgfri leselig kommentar å legge i .torrentfilen"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "valgfri målfil for torrenten"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dekod %s metainfofiler"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Bruk: %s [TORRENTFIL [TORRENTFIL ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfofil: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "filnavn: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "filstørrelse:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "filer:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "mappenavn: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "arkivstørrelse:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "tracker annonseringsurl: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "trackerløse noder:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "kommentar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Man"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Tir"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Ons"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Tor"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Fre"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Lør"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Søn"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Des"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Komprimert: %i Ukomprimert: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Kunne ikke lagre oppsett permanent: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Feil ved lesing av konfigurasjonsfil. Gammel konfigurasjonsfil lagret i \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Konfigurasjonsvalgkonflikt: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Du må avslutte %s og reinstallere. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Kunne ikke finne oversettelse for språket \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Filen %s hører til en annen kjørende torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Filen %s eksisterer allerede, men er ikke en vanlig fil"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Lite data - noe har forkortet filene?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr "Ukjent hurtigfortsettelsesformat, kanskje en annen klientversjon?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Et annet program kan ha flyttet, skiftet navn eller slettet filen, eller %s har krasjet sist gang det ble kjørt."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Et annet program kan ha endret filen, eller %s kan ha krasjet sist gang det ble kjørt."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Et annet program kan ha endret filen størrelsen, eller %s kan ha krasjet sist gang det ble kjørt."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Kunne ikke lese hurtigfortsettelsesdata: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "tilkobling avvist"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Du ba om at gjenbruk (reuse) skulle være av ved binding. Det er dessverre ikke mulig."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() kan kun kalles en gang per reactor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() kan ikke returnere før det er aktivitet, og kan kanskje ikke prosessere hendelsen du ønsker. Bruk listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "feil data i responsfil - totalen for liten"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "feil data i responsfil - totalen for stor"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "sjekker eksisterende fil"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 eller hurtigfortsettelsesinfo stemmer ikke med filtilstand (data mangler)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Hurtigfortsettelsesinfo stemmer ikke (filen inneholder mer data)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Hurtigfortsettelsesinfo stemmer ikke (ugyldig verdi)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "data ødelagt på disken - kjører du to kopier?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"ga beskjed om komplett fil ved oppstart, men en del feilet hash-kontrollen"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Kunne ikke sette signalhåndterer: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "droppet \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "la til \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "venter på hash-kontroll"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "laster ned"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Leser konfigurasjonsfilen om igjen"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Du kan ikke spesifisere navn på .torrentfilen når du genererer flere torrents på en gang"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Filsystemkodingen \"%s\" støttes ikke i denne versjonen"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Kunne ikke konvertere fil-/mappenavnet \"%s\" til utf-8 (%s). Enten er antatt filsystemkoding \"%s\" feil, eller filnavnet inneholder ugyldige tegn."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Fil-/mappenavnet \"%s\" inneholder reserverte unicodeverdier som ikke tilsvarer tegn."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Kunne ikke lese mappe "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Kunne ikke få status for "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "fjerner %s (vil legge til på nytt)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**advarsel** %s er er en maken torrent som %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**advarsel** %s har feil"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... vellykket"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "fjerner %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "ferdig med å sjekke"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Kunne ikke få status for %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Kunne ikke laste ned eller åpne \n%s\nPrøv å bruk en nettleser for å laste ned filen."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s eller nyere kreves"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "For sent å forandre RawServer backends, %s har allerede blitt brukt."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Trackerannonsering er fortsatt ikke ferdig %d sekunder etter at den startet"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problem med kobling til tracker, gethostbyname var mislykket - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problem med å koble til tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "feil i data fra tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "avvist av tracker - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Avslutter torrent, ettersom den ble avvist av trackeren uten å ha blitt koblet til noen peer. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Beskjed fra trackeren: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "advarsel fra tracker - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Trackerløst oppslag feilet: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "feil i metainfo - ikke en ordliste"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "feil i metainfo - feil fildel-nøkkel"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "feil i metainfo - ulovlig fildellengde"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "feil i metainfo - ugyldig navn"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "navnet %s er ikke tillatt av sikkerhetsmessige årsaker"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "blanding av enkeltfiler og flere filer"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "feil i metainfo - ugyldig lengde"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "feil i metainfo - \"files\" er ikke en filliste"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "feil i metainfo - filangivelse må være en ordliste"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "feil i metainfo - ugyldig sti"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "feil i metainfo - ugyldig sti til mappe"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "stien %s er ikke tillatt av sikkerhetsmessige årsaker"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "feil i metainfo - duplikate stier"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "feil i metainfo - navnet er brukt både som fil- og undermappenavn"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "feil i metainfo - feil objekttype"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "feil i metainfo - ingen annonseringsURL-string"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "feil i metainfo - noden er ikke en liste"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "feil i metainfo - nodelisten kan kun ha to elementer"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "feil i metainfo - node-verten må være en string"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "feil i metainfo - nodeportverdi må være integer"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "feilårsak må være en string"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "feilmelding må være en string"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr "ugyldig post i peer-liste - peer-info må være en dict"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "ugyldig post i peer-liste - peer-ip må være en string"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "ugyldig post i peer-liste - peer-port må være en integer"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ugyldig post i peer-liste - ugyldig peer-id"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ugyldig peer-liste"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "ugyldig annonseringsintervall"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "ugyldig minste annonseringsintervall"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ugyldig tracker-ID"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ugyldig peer-antall"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ugyldig antall seeds"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ugyldig \"siste\"-verdi"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Bruk: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[INNSTILLINGER] [TORRENTMAPPE]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Hvis et argument som ikke er en innstilling er tilstede, blir det\nbrukt som verdien til torrent_dir-innstilingen.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[INNSTILLINGER] [TORRENTFILER]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[INNSTILLINGER] [TORRENTFIL]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[INNSTILLING] TRACKER-URL FIL [FIL]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenter er -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (standard er "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "ukjent nøkkel "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parameter sendt på slutten uten verdi"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "kommandolinjegjennomgang feilet ved "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Valget %s er nødvendig."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Må minst oppgi %d argumenter."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "For mange argumenter - %d maks."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "feil format av %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port å lytte på."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fil å lagre nylig nedlastingsinformasjon i"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tid uten aktivitet før forbindelser stenges"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekunder mellom hver gang dfile lagres"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "sekunder mellom nedlastere som utløper"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "sekunder nedlastere skal vente mellom gjenannonseringer"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"standard antall noder meldinger blir sendt til hvis klienten ikke har spesifisert antallet"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "tid å vente mellom hver sjekk for å se etter tidsavbrutte forbindelser"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hvor mange ganger det skal sjekkes om en nedlaster er bak NAT (0 = ikke sjekk)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "om resultater av nat-sjekk skal legges i loggen"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "minste tid siden siste tømming før en ny kan gjøres"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"minste antall sekunder før et midlertidig lager (cache) er betegnet som foreldet, og blir tømt"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"bare tillat nedlastinger av .torrentfiler i denne mappen (og rekursivt i undermapper til mapper som ikke har .torrentfiler selv). Hvis denne er valgt, vil torrents i denne mappen være synlige på infosiden/scrape enten de har peers tilknyttet eller ikke"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"tillat spesielle nøkler i torrentene i \"allowed_dir\" å påvirke trackertilgang"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "om loggfilen skal gjenåpnes etter mottak av et HUP-signal"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"om en informasjonsside skal vises når trackerens rotmappe blir lastet inn"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "en URL å omdirigere informasjonssiden til"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "om navn fra \"allowed_dir\" skal vises"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"fil som inneholder x-icon-data som returneres når en nettleser etterspør favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorér IP GET-parameter fra maskiner som ikke er på lokalnettets IPadresser (0 = aldri, 1 = alltid, 2 = ignorer hvis NAT-sjekking ikke er aktivert). HTTP-mellomtjenerhoder som oppgir adressen til den originale klienten blir behandlet på samme måte som --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "fil å skrive tracker-logger til, bruk - for stdout (standard)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"bruk sammen med allowed_dir; legger til en /file?hash={hash}-URL som lar brukere laste ned torrentfilen"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"behold døde torrents etter at de går ut (slik at de fortsatt vil vises i din /scrapeog webside). Har kun noe å si hvis allowed_dir ikke er valgt"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "scrapetilgang er tillatt (kan være ingen, spesiell eller full)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "største antall peers å oppgi ved enhver forespørsel"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"filen din eksisterer kanskje et annet sted\n i universet, men dessverre ikke her\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**advarsel** spesifisert favicon-fil -- %s -- finnes ikke."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**advarsel** tilstandsfil %s er ødelagt; tilbakestiller til standard"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Logg Startet: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**advarsel** kunne ikke omdirigere stdout til loggfil: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Logg gjenåpnet: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**advarsel** kunne ikke gjenåpne loggfil"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+"spesifisert \"scrape\"funksjon er ikke tilgjengelig hos denne trackeren."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+"fullstendig \"scrape\"funksjon er ikke tilgjengelig hos denne trackeren."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "funksjonen \"get\" er ikke tilgjengelig hos denne trackeren."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Forespurt nedlasting er ikke autorisert til å bruke denne trackeren."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "kjør uten argumenter for forklaring på parametrene"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Avslutter: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Kan ikke starte to instanser av samme torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Skjul %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Vis %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "ikke en gyldig bkodet streng"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "ugyldig bkodet verdi (data etter gyldig prefiks)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport er lavere enn minport - ingen porter å sjekke"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Kunne ikke åpne en port å lytte på: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Kunne ikke åpne en port å lytte på: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Sjekk portintervall-innstillingene."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Første oppstart"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kunne ikke lade raskforsette data: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Vil foreta full hash-kontroll."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "del %d feilet hash-kontroll, laster ned på nytt"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Forsøkt på nedlasting av en trackerløs torrent med trackerløs klient avslått."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "nedlasting feilet: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO-feil: Ikke mer plass på disken, eller kan ikke opprette en så stor fil:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "avsluttet av IO-feil: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "avsluttet av operativsystemfeil: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "avsluttet på grunn av internt unntak: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Ekstra feil ved avslutning på grunn av feil: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Kunne ikke fjerne hurtigfortsettelsesfil etter feil:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "deler ut"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Kunne ikke skrive hurtigfortsettelsesdata: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "avslutt"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Dette ser ut til å være en gammel Pythonversjon, som ikke støtter oppdagelse av filsystemkoding. Antar 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python kunne ikke velge filsystemkodingen automatisk. Bruker 'ascii' i stedet."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Filsystemkoding '%s' støttes ikke. Bruker 'ascii' i stedet."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Feil i del av filstien: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denne .torrentfilen har blitt laget med et ødelagt verktøy og har uriktig kodede filnavn. Noen eller alle filnavnene kan være forskjellige fra det personen som laget .torrentfilen har ment."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denne .torrentfilen har blitt laget med et ødelagt verktøy, og har tegnverdier som ikke tilsvarer virkelige tegn. Noen eller alle filnavnene kan være forskjellig fra det personen som laget den har ment."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Denne .torrentfilen har blitt laget med et ødelagt verktøy og har feilkodede filnavn. Navnene kan fortsatt være riktige."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Tegnsettet i det lokale filsystemet (\"%s\") kan ikke vise alle tegn brukt i filnavnet/ene i denne torrenten. Filnavnene har blitt endret fra originalen."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Windows-filsystemet kan ikke behandle bokstaver brukt i filenavn(ene) i denne torrenten. Filnavn har blitt endret."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Denne .torrentfilen har blitt laget med et ødelagt verktøy, og har minst 1 fil eller en mappe med ugyldig navn, men ettersom alle slike filer har størrelse 0, er disse ignorert."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Ubehandlet kommando: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kunne ikke opprette kontrollforbindelse: allerede i bruk"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Kunne ikke fjerne filnavnet for den gamle kontrollforbindelsen:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kunne ikke opprette kontrollforbindelse: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Kunne ikke sende kommando: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Global mutex allerede laget."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Kunne ikke finne en åpen port!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Kunne ikke lage applikasjonsdatamappe!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Kunne ikke lage global mutex lås for kontrollforbinelse fil!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "En forrige verson av BitTorrent var ikke slettet riktig. Fortsetter."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "En annen instans av BitTorrent kjører, men \"%s\" eksisterer ikke.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Gjetter portnummer."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port funnet: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Kunne ikke finne port."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Tilkoblet DDE konversasjon."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "feilet å avregistrere eller lukke tjener-socket: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "mistet tjener-socket"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Feil ved håndtering av akseptert forbindelse: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Må avslutte fordi TCP forbindelsen svikter (TCP stack flaking out). Vennligst se FAQ/OSS under %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "mottatt ukjent meldingstype"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "tidsavbrudd"
+
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..fa86b54
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,2860 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 16:17-0500\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: Dutch <translations (at) bittorrent (dot) com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %s of hoger installeren"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "verminderd, niet gebruiken"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Kon geen verbinding maken met een ander %s proces, maar het lijkt toch te werken."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Alle %s vensters sluiten kan het probleem verhelpen."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s is al actief"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kon geen verbinding maken met een ander %s proces."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s of nieuwer is vereist"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "slepen om te herschikken"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "klikken met rechtermuisknop voor menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "inbelverbinding"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "ADSL/kabel 128k en hoger"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "ADSL/kabel 256k en hoger"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "ADSL 768k en hoger"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Geef torrent URL op"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Geef de URL van een torrent-bestand op dat u wilt openen:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximale uploadsnelheid:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Stop tijdelijk alle actieve torrents"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Downloaden hervatten"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nieuwe %s versie beschikbaar"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Een nieuwere versie van %s is beschikbaar.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Je gebruikt %s en de nieuwe versie is %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Je kunt altijd de laatste versie verkrijgen via \n %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Download _later"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Download _nu"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Herinner mij later"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Over %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Bèta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versie %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Kon %s niet openen"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Doneer"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s activiteitenlog"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Logboek opslaan in:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "logboek opgeslagen"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "logboek gewist"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Instellingen"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Algemeen"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "BitTorrent starten wanneer Windows wordt opgestart"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimaliseren tot systeemvak"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Tekst in voortgangsbalk is altijd zwart\n(vereist opnieuw starten)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Opslaan"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Sla nieuwe downloads op in:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Wijzigen..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Altijd vragen waar een nieuwe download moet worden opgeslagen"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Downloaden"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Wanneer er een nieuwe torrent wordt gestart:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Stopt u een andere torrent om ruimte te maken"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Stopt u geen andere draaiende torrents"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Wordt altijd gevraagd wat er gedaan moet worden"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seeding"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Seed voltooide torrents: totdat deelratio [_] procent heeft bereikt, of gedurende [_] minuten, welke het eerst van toepassing is."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Oneindig seeden"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seed laatst voltooide torrent: totdat deelratio [_] procent heeft bereikt."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Netwerk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Zoek naar beschikbare poort:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "starten bij poort: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Automatische poorttoewijzing inschakelen"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP om te melden aan de tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Heeft geen effect tenzij u zich bevindt op\n hetzelfde lokale netwerk als de tracker.)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"WAARSCHUWING: Het wijzigen van deze instellingen kan\n %s verhinderen goed te functioneren."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Optie"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Waarde"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Geavanceerd"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Kies standaard downloadmap"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Snelkoppeling kan niet worden verwijderd: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Bestanden in \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nooit"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nooit downloaden"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normaal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Normaal downloaden"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Eerste"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Eerst downloaden"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Bestandsnaam"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lengte"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Downloaden"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nooit"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "eerste"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers voor \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-adres"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Verbinding"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s down"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s up"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB gedownload"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB geüpload"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% voltooid"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s geschatte download van peer"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer-id"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Geïnteresseerd"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Gestaakt"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Afgewezen"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistische upload"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "extern"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokaal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "slechte peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d slecht"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "verboden"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info over \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrentnaam:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(trackerloze torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Aankondigs-url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", in één bestand"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", in %d bestanden"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Totale grootte:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Delen:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Opslaan in:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Bestandsnaam:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Open map"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "_Bestandslijst weergeven"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Torrent verwijderen"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Torrent stoppen"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", zal seeden voor %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", zal onbeperkt seeden."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Klaar, share ratio: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Gereed, %s geüpload"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Gereed"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Bestandslijst"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peerlijst"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Locatie wijzigen"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Oneindig seeden"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Her_starten"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Voltooien"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Verwijderen"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Afbreken"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Weet je zeker dat je \"%s\" wilt verwijderen?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Je deelratio voor deze torrent is %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "U hebt %s naar deze torrent geüpload."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Deze torrent verwijderen?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Voltooid"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "sleep in lijst om te seeden"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Mislukt"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "sleep in lijst om te hervatten"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Wachten"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Gepauzeerd"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Actief"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Huidige up: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Huidige down: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Vorige up: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Vorige down: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Deelratio: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds. Totalen van tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Verzonden kopieën: %d; Volgende: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Stukken: %d totaal, %d voltooid, %d deels, %d actief (%d leeg)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d slechte stukken + %s in verworpen aanvragen"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% gereed, %s resterend"
+
+#: bittorrent.py:2311
+msgid "Download rate"
+msgstr "Downloadsnelheid"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Uploadratio"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Niet beschikbaar"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s begonnen"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Afsluiten"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Stoppen"
+
+#: bittorrent.py:2788
+msgid "_Open torrent file"
+msgstr "Torrentbestand _openen"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Torrent_URL openen"
+
+#: bittorrent.py:2790
+msgid "Make _new torrent"
+msgstr "_Nieuwe torrent maken"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pauzeren/afspelen"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "_Voltooide torrents weergeven/verbergen"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Venstergrootte aanpassen"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Instellingen"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Help"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Info"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Doneren"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Bestand"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Weergave"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Zoek naar torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(gestopt)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(meerdere)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Al bezig met downloaden van installer %s"
+
+#: bittorrent.py:3159
+#, python-format
+msgid "Install new %s now?"
+msgstr "Nieuwe %s nu installeren?"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Wilt u %s afsluiten en de nieuwe versie %s nu installeren?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s help is op \n%s\nWilt u hier nu naartoe gaan?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Help-webpagina bezoeken?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Er is één voltooide torrent in de lijst."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Wilt u dit verwijderen?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Er zijn %d voltooide torrents in de lijst."
+
+#: bittorrent.py:3220
+msgid "Do you want to remove all of them?"
+msgstr "Wilt u deze allemaal verwijderen?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Wilt u alle voltooide torrents verwijderen?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Geen voltooide torrents"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Er zijn nog geen voltooide torrents om te verwijderen."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Open torrent:"
+
+#: bittorrent.py:3309
+msgid "Change save location for "
+msgstr "Verander de opslaglocatie voor"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Bestand bestaat al!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" bestaat al. Wilt u een andere bestandsnaam kiezen?"
+
+#: bittorrent.py:3356
+msgid "Save location for "
+msgstr "Opslaglocatie voor "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Map bestaat al!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" bestaat al. Wilt u een identieke, gekopieerde map in de bestaande map maken?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globaal bericht): %s"
+
+#: bittorrent.py:3506
+#, python-format
+msgid "%s Error"
+msgstr "%s Fout"
+
+#: bittorrent.py:3512
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Er zijn meerdere fouten opgetreden. Klik op OK voor het foutenlogboek."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Actieve torrent stoppen?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"U staat op het punt \"%s\" te starten. Wilt u ook een andere, lopende torrent stoppen?"
+
+#: bittorrent.py:3691
+msgid "Have you donated?"
+msgstr "Hebt u al gedoneerd?"
+
+#: bittorrent.py:3692
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Welkom bij de nieuwe versie van %s. Hebt u al gedoneerd?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Bedankt!"
+
+#: bittorrent.py:3708
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Bedankt voor uw donatie! Als u opnieuw wilt doneren, selecteert u \"Doneren\" in het menu \"Help\"."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Kan de torrent-wachtrij niet starten, zie hierboven voor fouten."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s maker van torrentbestand %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Maak torrentbestand voor dit bestand/deze map:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Kiezen..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Mappen worden batch-torrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Deelgrootte:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Gebruik _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Gebruik _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Knooppunten (optioneel):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Opmerkingen:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Maken"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Poort"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Torrents aanmaken..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Bestandsgrootten controleren..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Begin met seeden"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "maken"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Gereed."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrents aanmaken voltooid."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Fout!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Fout tijdens maken van torrents:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s of nieuwer vereist"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dagen"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dag, %d uren"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d uren"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuten"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d seconden"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 seconden"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Help"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Veelgestelde vragen:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ga"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Bestaande map kiezen..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alle bestanden"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Nieuwe map maken..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Bestand selecteren"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Map selecteren"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Kan opgeslagen toestand niet laden:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Kan UI-toestand niet opslaan:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Ongeldige inhoud van toestandsbestand"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Fout bij lezen van bestand \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "kan toestand niet volledig herstellen"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ongeldig toestandsbestand (dubbele invoer)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Beschadigde gegevens in \"%s\", kan torrent niet herstellen."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash komt niet overeen)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ongeldig toestandsbestand (foute invoer)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Fout UI-toestandsbestand"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Onjuiste versie van UI-toestandsbestand "
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Niet-ondersteunde versie van UI-toestandsbestand (van nieuwere clientversie?)"
+
+#: BitTorrent/TorrentQueue.py:489
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Kan %s bestand nietuit cache verwijderen:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Dit is geen geldig torrentbestand. (%s)"
+
+#: BitTorrent/TorrentQueue.py:538
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Deze torrent (of een torrent met dezelfde inhoud) wordt al uitgevoerd."
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Deze torrent (of een torrent met dezelfde inhoud) wacht al om te worden uitgevoerd."
+
+#: BitTorrent/TorrentQueue.py:549
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent in onbekende toestand %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "Kan bestand niet wegschrijven"
+
+#: BitTorrent/TorrentQueue.py:568
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrent zal niet correct herstarten bij herstart van client"
+
+#: BitTorrent/TorrentQueue.py:671
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Kan niet meer dan %d torrents tegelijk uitvoeren. Lees voor meer informatie de FAQ op %s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrent wordt niet gestart omdat andere torrents wachten om te worden uitgevoerd en deze torrent al voldoet aan de voorwaarden om met seeden te stoppen."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Torrent wordt niet gestart omdat de torrent al voldoet aan de voorwaarden om te stoppen met het seeden van de laatst voltooide torrent."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Kan de laatste versie niet krijgen van %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Kan nieuwe versietekenreeks van %s niet parseren"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Kan geen passende, tijdelijke locatie vinden om de %s %s installer op te slaan."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Geen torrentbestand beschikbaar voor %s %s installer."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s installer is niet compleet, zoek of beschadigd."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Kan installer niet onder dit besturingssysteem starten"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Geen torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Downloaden begint"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Functioneert normaal"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Downloads kunnen langzaam zijn:\nWaarschijnlijk door firewall/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Controleer de netwerkverbinding"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"map waarin variabele gegevens, zoals snelhervatinformatie en interface-instellingen worden opgeslagen. Standaard is dit de submap 'data' van de configuratiemap van bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"tekencodering gebruikt op het lokale bestandssysteem. Als dit leeg wordt gelaten, wordt automatische detectie gebruikt. Automatische detectie werkt niet onder versies van Python die ouder zijn dan 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "te gebruiken ISO-taalcode"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ip-adres om door te geven aan tracker (heeft geen invloed tenzij u zich bevindt op hetzelfde lokale netwerk als de tracker)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"poortnummer is voor iedereen zichtbaar als het een ander nummer is dan dat waar de client lokaal naar luistert"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "laagste nummer poort om op te luisteren, telt op indien onbeschikbaar"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "hoogste nummer poort om op te luisteren"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip-adres om lokaal te binden"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "seconden tussen updates van weergegeven informatie"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+"aantal minuten dat moet worden gewacht voordat meer peers worden aangevraagd"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimum aantal peers om niet opnieuw aanvragen in te dienen"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "aantal peers waarbij er geen nieuwe verbindingen worden aangegaan"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maximum aantal uitgaande, incomplete verbindingen"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maximum aantal toegestane verbindingen, hierna worden nieuw binnenkomende verbindingen meteen gesloten"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "moeten hashes op schijf gecontroleerd worden of niet"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximum aantal kB/s om mee te uploaden, 0 betekent geen limiet"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"het aantal uploads om op te bouwen met extra optimistische deblokkering"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"het maximum aantal bestanden in een meerbestands-torrent dat tegelijkertijd moet worden opengehouden. 0 betekent geen limiet. Wordt gebruikt om te voorkomen dat bestandsbeschrijvingen opraken."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Initialiseer een client zonder tracker. Deze optie moet worden ingeschakeld om trackerloze torrents te downloaden."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "aantal seconden pauze tussen het verzenden van keepalives"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "aantal bytes waarop per aanvraag een query kan worden uitgevoerd."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"maximumlengte van voorvoegselcodering die je over de kabel accepteert. Bij grotere waarden wordt de verbinding verbroken."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"aantal seconden dat wordt gewacht om sockets te sluiten waarop niets is ontvangen"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"aantal seconden dat wordt gewacht om vast te stellen of er voor een verbinding een time-out is opgetreden"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maximale lengte van segment om naar peers te sturen. Sluit de verbinding als een groter verzoek wordt ontvangen"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"maximale tijdsinterval waabinnen de huidige upload- en downloadsnelheden worden geschat"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"maximale tijdsinterval waarbinnen de huidige seedsnelheid wordt geschat"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"maximale wachttijd tussen het opnieuw proberen van aankondigingen als ze blijven mislukken"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"aantal seconden dat op binnenkomst van gegevens via een verbinding wordt gewacht voordat wordt aangenomen dat de verbinding semi-permanent verstopt is"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"aantal downloads waarbij wordt overgestapt van willekeurig naar meest zeldzame eerst"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "hoeveel bytes er tegelijk naar netwerkbuffers worden geschreven."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"verdere verbindingen weigeren vanaf adressen met onvolledige of opzettelijk vijandige peers die niet-correcte gegevens versturen"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "maak geen verbinding met meerdere peers die hetzelfde IP-adres hebben"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"indien ongelijk aan nul, stelt u de TOS-optie voor peerverbindingen in op deze waarde"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"schakel tijdelijke oplossing voor een bug in BSD libc in, die het lezen van bestanden sterk vertraagt."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adres van HTTP proxy dat voor trackerverbindingen moet worden gebruikt"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "sluit verbindingen met RST en voorkom de status TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Gebruik Twisted netwerkbibliotheken voor netwerkverbindingen. 1 betekent twisted gebruiken, 0 twisted niet gebruiken, -1 automatisch detecteren en bij voorkeur twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"bestandsnaam (voor torrents met één bestand) of mapnaam (voor batchtorrents) om de torrent 'op te slaan als' en de standaardnaam in de torrent te negeren. Zie ook --save_in, indien geen van beide is opgegeven wordt de gebruiker gevraagd waar het bestand moet worden opgeslagen"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "geavanceerde gebruikersinterface weergeven"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"het maximum aantal minuten dat een voltooide torrent moet worden geseed voordat met seeden wordt gestopt"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"de minimale upload/downloadverhouding in procenten die moet worden bereikt voordat met seeden wordt gestopt. 0 betekent onbegrensd."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"de minimale upload/downloadverhouding in procenten die moet worden bereikt voordat met het seeden van de laatste torrent wordt gestopt. 0 betekent onbegrensd."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Elke voltooide torrent oneindig seeden (totdat de gebruiker dit annuleert)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "De laatste torrent oneindig seeden (totdat de gebruker dit annuleert)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "downloader in de pauze-modus starten"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"specifieert hoe een toepassing zich grdraagt als een gebruiker handmatig een andere torrent probeert te starten: \"vervangen\" betekent altijd: het vervangen van de uitgevoerde torrent door de nieuwetoerrent, \"toevoegen\" betekent altijd het parallel toevoegen van de uitgevoerdetorrent en \"vragen\" betekent altijd: de gebruiker elke keer vragen."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Start BitTorrent geminimaliseerd"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"negeer de versie gegeven door de http-versiecontrole en schakel de debugmodus voor versiecontrole in"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"negeer de huidige versie zoals gebruikt tijdens de versiecontrole en schakel de debugmodus voor versiecontrole in"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"specificeer de venstergrootte en -positie in het formaat: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"bestandsnaam (voor torrents met één bestand) of mapnaam (voor batchtorrents) om de torrent 'op te slaan als' en de standaardnaam in de torrent te negeren. Zie ook --opslaan_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"het maximumaantal gelijktijdig toegestane uploads. -1 betekent een (hopelijk) redelijk aantal dat is gebaseerd op -- max_upload_rate. De automatische waarden zijn alleen van toepassing wanneer er één torrent tegelijk wordt uitgevoerd."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"lokale map waarin de inhoud van de torrent wordt opgeslagen. Het bestand (torrents met één bestand) of de map (batchtorrents) wordt in deze map gemaakt en krijgt de standaardnaam die in het bestand .torrent wordt vermeld. Zie ook --save_as"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"het al dan niet vragen naar een locatie om gedownloade bestanden in op te slaan"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"lokale map waarin de torrents worden opgeslagen onder denaam die is vastgelegd in --saveas_style. Als deze optie leeggelaten is, wordt elke torrent opgeslagen in de map van het overeenkomstige .torrent-bestand"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "hoe vaak de torrentmap opnieuw gescand wordt, in seconden"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"wacht zoveel seconden na het opmerken van een torrent voordat u het start, om een race met trackers te vermijden"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Manieren om een naam aan torrentdownloads te geven: 1: gebruik de naam VAN het torrentbestand (zonder .torrent); 2: gebruik de naam gecodeerd IN het torrentbestand; 3: maak een map met de naam VAN het torrentbestand (zonder .torrent) en sla de download op in die map onder de naam die is gecodeerd IN het torrentbestand; 4: als de naam VAN het torrentbestand(zonder .torrent) en de naam gecodeerd IN het torrentbestand identiek zijn, gebruikt u die naam (stijl 1/2), of maak anders een tussenmap als in stijl 3; LET OP: bij opties 1 en 2 kunnen bestanden zonder waarschuwing worden overschreven, wat beveiligingsproblemen kan veroorzaken."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"of voor elke torrent het volledige pad of de torrentinhoud moet worden weergegeven"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "map om .torrentbestanden in op te zoeken (semi-recursief)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "of diagnostische informatie op stdout moet worden weergegeven"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "op welke macht van twee de stukgrootte moet worden gezet"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "standaardnaam van tracker"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"Bij onwaar maak een trackerloze torrent in plaats van een aankondigings-URL, gebruik een betrouwbaar knooppunt met de opmaak <ip>:<poort> of een lege string om enkele knooppunten uit uw routingtabel op te halen"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "download voltooid!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<onbekend>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "voltooid over %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "download is geslaagd"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB verzonden / %.1f MB ontvangen)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB verzonden/ %.1f MB ontvangen)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d nu gezien, plus %d gedistribueerde kopieën (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d gedistribueerde kopieën (volgende: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d nu gezien"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FOUT:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "bezig met opslaan van:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "bestandsgrootte:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percentage voltooid:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "resterende tijd: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "downloaden naar: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "downloadverhouding:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "uploadverhouding: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "deelscore: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "seed-status: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peer-status: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Je kan niet zowel --save_as als --save_in opgeven"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "bezig met afsluiten"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Fout tijdens het lezen van configuratie:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Fout tijdens het lezen van het .torrent-bestand:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "je moet een .torrent-bestand opgeven"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"De initialisatie van de gebruikersinterface in tekstmodus is mislukt, kan niet doorgaan."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Voor deze downloadinterface is de standaard Python-module \"curses\" vereist. Deze module is niet beschikbaar voor de native Windows-poort van Python. Het is echter wel beschikbaar voor de Cygwin-poort van Python, die op alle Win32-systemen kan worden uitgevoerd (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Je kunt \"bittorrent-console\" nog steeds gebruiken om te downloaden."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "bestand:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "grootte:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "bestemming:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "voortgang:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "dl snelheid:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "ul snelheid:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "gedeeld:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "seeds:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d nu gezien, plus %d gedistribueerde kopieën (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "fout(en):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "fout:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+"# IP Upload Download Voltooid Snelheid"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"bezig %d stuks te downloaden, heb %d fragmenten, %d van %d stuks voltooid"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Deze fouten traden op tijdens het uitvoeren:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Gebruik: %s TRACKER_URL [TORRENTBESTAND [TORRENTBESTAND ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "oude aankondiging voor %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "geen torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEEMFOUT - UITZONDERING GEGENEREERD"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Waarschuwing:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "is geen map"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "fout: %s\n uitvoeren zonder argumenten voor parameteruitleg"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nUITZONDERING:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Je kan nog steeds \"btdownloadheadless.py\" gebruiken om te downloaden."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "bezig verbinding te maken met peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tijd tot voltooiing %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Grootte"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Uploaden"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totalen:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s peers %s seeds %s gedistr kopieën - %s download %s upload"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "fout:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\n uitvoeren zonder argumenten voor parameteruitleg"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "optioneel leesbaar commentaar om in .torrent te plaatsen"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "optioneel doelbestand voor de torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodeer %s meta-info bestanden"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Gebruik: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo bestand: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "bestandsnaam: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "bestandsgrootte:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "bestanden:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "mapnaam: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "archiefgrootte:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "aankondigings-url van tracker: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "trackerloze knooppunten:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "commentaar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Ma"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Di"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Wo"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Do"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Vr"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Za"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Zo"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "mrt"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "mei"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Gecomprimeerd: %i Niet gecomprimeerd: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Kon opties niet permanent opslaan:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Fout tijdens lezen configuratiebestand. Oude configuratiebestand opgeslagen in \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Configuratie optie klopt niet: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "U moet %s afsluiten en herinstalleren. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Kon vertaling voor taal \"%s\" niet vinden\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Bestand %s behoort tot een andere actieve torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Bestand %s bestaat al, maar is geen regulier bestand"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Leesinvoer kort - iets heeft bestanden misvormd?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Snelhervat-bestand niet ondersteund, misschien van een andere client-versie?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Een ander programma blijkt het bestand verplaatst, anders genaamd, of gewist te hebben. of %s kunnen gecrashed zijn sinds de laatste maal dat het gebruikt is"
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Een ander programma lijkt het bestand te hebben aangepast, of %s kan gecrashed zijn sinds het laatste gebruik."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Een ander programma lijkt de bestandsgrootte te hebben aangepast, of %s kan gecrashed zijn sinds het laatste gebruik."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Kon snelhervat-gegevens niet lezen: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "verbinding geweigerd"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"U vroeg om hergebruik uit te schakelen tijdens binding. Sorry, maar dat is niet mogelijk."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"listen_forever() zou maar één maal per reactor kunnen worden aangeroepen."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() zal mogelijk geen waarde teruggeven totdat er activiteit is noch het gewenste event verwerken. Gebruik listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "slechte gegevens in antwoordbestand - totaal te klein"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "slechte gegevens in antwoordbestand - totaal te groot"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "controleerd bestaand bestand"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 of snelhervat info komt niet overeen met bestandsstatus (mist gegevens)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Slechte snelharvat info (bestanden bevatten meer gegevens)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Slechte snelhervat info (niet toegestane waarde)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "data verminkt op schijf - misschien zijn er twee programma's actief?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"bestand zou compleet zijn bij opstarten, maar deel is fout volgens hash controle"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Kon signaalregelaar niet instellen: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "laten vallen \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "toegevoegd \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "wachtend op hash-controle"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "bezig met downloaden"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Opnieuw inlezen configuratiebestand"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"De naam van het .torrent-bestand kan niet worden opgegeven bij het gelijktijdig aanmaken van meerdere torrents"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Bestandssysteem-codering \"%s\" wordt niet ondersteund in deze versie"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Kon bestands- of mapnaam \"%s\" niet omzetten naar utf-8 (%s). Of de veronderstelde bestandssysteem-codering \"%s\" is verkeerd of de bestandsnaam bevat niet toegestane bytes."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Bestands- of mapnaam \"%s\" bevat gereserveerde unicode waarden die niet overeenkomen met karakters."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Kon map niet lezen "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Kon status niet bepalen "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "verwijderen %s (zal opnieuw toevoegen)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**waarschuwing** %s is een kopie torrent van %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**waarschuwing** %s bevat fouten"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... gelukt"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "verwijder %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "klaar met controleren"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Kan bestand %s niet lezen"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Kan \n %s\n niet downloaden of openen. Probeer een webbrowser te gebruiken om de torrent te downloaden."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s of hoger vereist"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Te laat om RawServer backends, %s is al gebruikt."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Tracker aankondiging nog steeds niet compleet %d seconden na start"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Probleem verbinden met de tracker, gethostbyname mislukt - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Probleem met verbinden met tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "verkeerde data van tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "afgewezen door tracker - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Bezig torrent stop te zetten aangezien deze werd afgewezen door de tracker zonder met enige peers verbonden te zijn. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Bericht van de tracker: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "waarschuwing van de tracker - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Trackerless opzoeken mislukt:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "slechte meta-info - is geen woordenboek"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "slechte meta-info - slechte delensleutel"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "slechte meta-info - niet toegestane deellengte"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "slechte meta-info - verkeerde naam"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "naam %s niet toegestaan om beveiligingsredenen"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "enkel/meerdere bestand mix"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "slechte meta-info - verkeerde lengte"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "slechte meta-info - \"bestanden\" is geen bestandslijst"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "slechte meta-info - bestand toevoeging moet een dict zijn"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "slechte meta-info - fout pad"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "slechte meta-info - fout pad naar map"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "pad %s niet toegestaan om beveiligingsredenen"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "slechte meta-info - identiek pad"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "slechte meta-info - naam zowel gebruikt als bestands- en submapnaam"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "slechte meta-info - verkeerd object type"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "slechte meta-info - geen aankondigings URL string"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "slechte meta-info - node is geen lijst"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "slechte meta-info - node-lijst mag slechts twee elementen bevatten"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "slechte meta-info - node-host moet een string zijn"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "slechte meta-info - node-poort moet integer zijn"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "de reden van falen moet een string zijn"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "waarschuwingsbericht moet een string zijn"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr "ongeldige toevoeging in peer-lijst - peer-info moet een dict zijn"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "ongeldige toevoeging in peer-lijst - peer-ip moet een string zijn"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "ongeldige toevoeging in peer-lijst - peer-poort moet integer zijn"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ongeldige ingave in peer lijst - ongeldige peer id"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ongeldige peer-lijst"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "ongeldig aankondigingsinterval"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "ongeldig min aankondigingsinterval"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ongeldig tracker-id"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ongeldige peer uitkomst"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ongeldige seed uitkomst"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ongeldige \"laatste\" toevoeging"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Gebruik: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIES] [TORRENTMAP]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Bij aanwezigheid van een niet-optie argument, wordt het geinterpreteerd als de waarde\n van de torrent_dir optie.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIES] [TORRENTBESTANDEN]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIES] [TORRENTBESTAND]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTIE] TRACKER_URL BESTAND [BESTAND]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenten zijn -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (standaard als "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "onbekende sleutel "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parameter aan het einde ingevoegd zonder waarde"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "commandoregel verwerking mislukt bij "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Optie %s is verplicht."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Moet minstens %d argumenten opgeven."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Te veel argumenten - %d maximaal."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "verkeerde formaat van %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Poort om op te luisteren."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "bestand waarin recente downloaderinfo moet worden opgeslagen"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "timeout waarbij verbindingen worden gesloten"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "seconden tussen het bewaren van de downloadfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "seconden tussen het verlopen van downloaders"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "seconden wachttijd voor downloaders tussen heraankondigingen"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"standaard aantal peers waaraan een infobericht gestuurd moet worden als the client geen aantal opgeeft"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "wachttijd tussen het controleren van mogelijke timeouts bij connecties"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hoe vaak controleren of een downloader zich achter een NAT bevindt (0 = geen controle)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"of regels toegevoegd worden aan het logbetand van nat-controle resultaten"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "minimale tijd tussen de laatste schoonmaak en een nieuwe"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"minimale tijd in seconden voordat een cache wordt gezien als niet-actueel en wordt gewist"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"alleen downloads toestaan voor .torrents in deze map (en onderliggende mappen van mappen die zelf geen .torrent bestanden hebben). Indien aan, verschijnen torrents in deze map op de infopagina/scrape ongeacht of zij peers hebben"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"toestaan van speciale sleutels in torrents uit de allowed_dir om tracker toegang te beïnvloeden"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "of het logbestand geopend moet worden bij ontvangen HUP signaal"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"of een infopagina weergegeven moet worden als de hoofdmap van de tracker wordt geladen"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "een URL om de infopagina naar te herleiden"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "of namen uit allowed dir weergegeven moeten worden"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"bestand dat x-icon data bevat dat moet worden teruggestuurd als browser favicon.ico aanvraagt"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"negeer ip GET parameter van computers die niet behoren tot LAN IP's (0 = nooit, 1 = altijd, 2 = negeren als NAT controle niet ingeschakeld is). HTTP proxy headers die het adres van de originele gebruiker laten zien, worden hetzelfde behandeld als --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"bestand voor het schrijven van de trackerlogs, gebruik - voor stdout (standaard)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"gebruik met allowed_dir; voegt een /file?hash={hash} url toe waarmee gebruikers de torrent file kunnen downloaden"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"bewaar dode torrents nadat zij verlopen (zodat zij blijven verschijnen op /scrape en webpagina). Alleen van belang als allowed_dir niet is ingesteld"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "scrape toegang toegestaan (kan zijn none, specific of full)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maximale aantal peers om te geven bij iedere aanvraag"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"uw bestand kan ergens in het universum bestaan\nmaar helaas, niet hier\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**waarschuwing** opgegeven favicon bestand -- %s -- bestaat niet."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**waarschuwing** statusbestand %s corrupt; opnieuw aanmaken"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Log gestart: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**waarschuwing** kon stdout niet doorsturen naar logbestand: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log heropend: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**waarschuwing** kan het logbestand niet heropenen"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "specifieke scrape functie is niet beschikbaar bij deze tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "full scrape functie is niet beschikbaar bij deze tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "get functie is niet beschikbaar bij deze tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Aangevraagde download is niet toegelaten voor gebruik met deze tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "activeer zonder argumenten voor uitleg van parameters"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Afsluiten: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Kan niet dezelfde torrent twee keer opstarten"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Verberg %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Toon %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "geen geldige b-geëncodeerde string"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "ongeldige b-geëncodeerde waarde (gegevens na geldig voorvoegsel)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxpoort kleiner dan minpoort - geen poorten om te controleren"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Kon geen luisterende poort openen: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Kon geen luisterende poort openen: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Controleer de instellingen van het poortbereik."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Eerste opstart"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kon snelhervat-gegevens niet laden: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Zal volledige hash controle uitvoeren."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "deel %d kwam niet door hash controle, wordt opnieuw gedownload"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Poging om een trackerloze torrent met een trackerloze cliënt te downloaden uitgeschakeld."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "download mislukt: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Fout: Geen ruimte vrij op schijf, of kan niet zo'n groot bestand aanmaken:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "beëindigd door IO fout:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "beëindigd door OS fout:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "beëindigd door interne uitzondering: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Bijkomende fout bij afsluiten ten gevolge van fout: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Kon snelhervat bestand niet verwijderen na fout:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "seeding"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Kon snelhervat data niet wegschrijven:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "sluit af"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Dit lijkt een oude versie van Python te zijn die detecteren van bestandsysteemcodering niet ondersteunt. Er wordt 'ascii' verondersteld."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python kan de bestandsysteemcodering niet automatisch detecteren. Daarom wordt 'ascii' gebruikt."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Bestandsysteemcodering '%s' wordt niet ondersteund. Daarom wordt 'ascii' gebruikt."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Beschadigde component van bestandspad: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Dit .torrent-bestand is gemaakt met een beschadigde tool en de bestandsnamen zijn onjuist gecodeerd. Alle of een deel van de bestandsnamen verschijnen mogelijk anders dan bedoeld door de maker van het .torrent-bestand."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Dit .torrent-bestand is gemaakt met een beschadigde tool en heeft onjuiste tekenwaarden die niet met enige echt teken overeenkomen. Sommige of alle bestandsnamen verschijnen mogelijk anders dan bedoeld door de maker van het .torrent bestand."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Dit .torrent-bestand is gemaakt met een beschadigde tool en de bestandsnamen zijn onjuist gecodeerd. De gebruikte namen zijn mogelijk wel juist."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"De karakterverzameling die in het lokale bestandsysteem (\"%s\") wordt gebruikt, kan niet alle tekens weergegeven die in de bestandsnamen van deze torrent voorkomen. De bestandsnamen zijn gewijzigd ten opzichte van de oorspronkelijke."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Het bestandssysteem van Windows kan niet omgaan met enkele karakters die in de bestandsna(a)m(en) van deze torrent zitten. Bestandsnamen zijn veranderd ten opzichte van het orgineel."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Dit .torrent bestand is gemaakt met een kapotte tool en heeft tenminste 1 bestand met een ongeldige bestands- of mapnaam. Maar aangezien deze bestanden gemerkt waren als hebbende een lengte van 0, worden deze gewoon genegeerd."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Onbekend commando: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kon geen controlesocket maken: reeds in gebruik"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Kon oude controlesocket bestandsnaam niet verwijderen:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kon geen controlesocket maken: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Kon geen opdracht sturen: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Globale mutex is al aangemaakt."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Kon geen open poort vinden!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Kon geen map met programmagegevens aanmaken!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Kon geen globale mutex lock verkrijgen voor controlsocketbestand!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Een eerdere sessie van BT was niet juist opgeschoond. Huidige sessie gaat door."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Er draait een andere sessie van BT, maar \"%s\" bestaat niet.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Ik vermoed bij de poort."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Poort gevonden: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Kan de poort niet vinden."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE Conversation verbonden."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "kan de serversocket niet sluiten of uitschrijven: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "server socket verloren"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Foutafhandeling accepteerde verbinding: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Moet stoppen omdat de TCP stack het begaf, raadpleeg a.u.b. de FAQ op %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "onbekend boodschaptype ontvangen"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "timeout"
+
diff --git a/po/nn_NO.po b/po/nn_NO.po
new file mode 100644
index 0000000..7efb23a
--- /dev/null
+++ b/po/nn_NO.po
@@ -0,0 +1,2876 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-11-23 16:20-0800\n"
+"Last-Translator: Frode <hybelworms@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Istaller Python %s eller nyere"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Å Lukke alle %s vindua kan fiske problemet."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s køyrer allerede."
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Trenger PyGTK %s eller nyere."
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr ""
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Høyre-klikk for meny"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr ""
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Kabel 128 opp"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Kabel 256k opp"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k opp"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr ""
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr ""
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr ""
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr ""
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr ""
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr ""
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr ""
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr ""
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr ""
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr ""
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr ""
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/piglatin.po b/po/piglatin.po
new file mode 100644
index 0000000..03b74d8
--- /dev/null
+++ b/po/piglatin.po
@@ -0,0 +1,2649 @@
+# Pig Latin Translation of Bittorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-07-03 15:38-0700\n"
+"PO-Revision-Date: 2005-07-26 13:02-0700\n"
+"Last-Translator: Gabriel Beecham <gabriel_beecham@yahoo.co.uk>\n"
+"Language-Team: Pig Latin <matt-bittorrent@theory.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: btdownloadgui.py:24 btmaketorrentgui.py:23
+msgid "Install Python 2.3 or greater"
+msgstr "Installay Ythonpay 2.3ay oray eatergray."
+
+#: btdownloadgui.py:38
+msgid "PyGTK 2.4 or newer required"
+msgstr "yGKTPay 2.4 oray ewernay equiredray."
+
+#: btdownloadgui.py:103
+msgid "drag to reorder"
+msgstr "agdray ootay eorderay"
+
+#: btdownloadgui.py:104
+msgid "right-click for menu"
+msgstr "ightay-ickclay oray enumay"
+
+#: btdownloadgui.py:110
+msgid "dialup"
+msgstr "ialupday"
+
+#: btdownloadgui.py:111
+msgid "DSL/cable 128k up"
+msgstr "eeSLday/ablecay 128kay upay"
+
+#: btdownloadgui.py:112
+msgid "DSL/cable 256k up"
+msgstr "eeSLday/ablecay 25fkay upay"
+
+#: btdownloadgui.py:113
+msgid "DSL 768k up"
+msgstr "eeSLday 768kay upay"
+
+#: btdownloadgui.py:114
+msgid "T1"
+msgstr "eeTay1ay"
+
+#: btdownloadgui.py:115
+msgid "T1/E1"
+msgstr "eeTay1ay/eeay1ay"
+
+#: btdownloadgui.py:116
+msgid "E1"
+msgstr "eeay1ay"
+
+#: btdownloadgui.py:117
+msgid "T3"
+msgstr "eeTayeethray"
+
+#: btdownloadgui.py:118
+msgid "OC3"
+msgstr "Arange County #3"
+
+#: btdownloadgui.py:298
+msgid "Maximum upload rate"
+msgstr "Aximumay uploaday ateray"
+
+#: btdownloadgui.py:311
+msgid "Temporarily stop all running torrents"
+msgstr "Emporarilyay opstay allay unningray orrentstay"
+
+#: btdownloadgui.py:312
+msgid "Resume downloading"
+msgstr "Esumeray ownloadingay"
+
+#: btdownloadgui.py:351
+#, python-format
+msgid "New %s version available"
+msgstr "Ewnay %s ersionvay availablay"
+
+#: btdownloadgui.py:366
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Ay ewernay ersionvay ofay %s isay availablay.\n"
+
+#: btdownloadgui.py:367
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Oyay aray usingya %s, anday uhthay ewnay ersionvay isay %s.\n"
+
+#: btdownloadgui.py:368
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Ooya ancay alwaysay ettgay uhthay atestlay ersionvay omfray \n"
+"%s"
+
+#: btdownloadgui.py:375 btdownloadgui.py:1793 btdownloadgui.py:1898
+msgid "Download _later"
+msgstr "Ownload ater_lay"
+
+#: btdownloadgui.py:378 btdownloadgui.py:1757
+msgid "Download _now"
+msgstr "Ownload ow_nay"
+
+#: btdownloadgui.py:384
+msgid "_Remind me later"
+msgstr "Emind_ray emay aterlay"
+
+#: btdownloadgui.py:416
+#, python-format
+msgid "About %s"
+msgstr "Aboutay %s"
+
+#: btdownloadgui.py:431
+msgid "Beta"
+msgstr "Etabay"
+
+#: btdownloadgui.py:433
+#, python-format
+msgid "Version %s"
+msgstr "Ersionvay %s"
+
+#: btdownloadgui.py:452
+msgid "Donate"
+msgstr "Onateday"
+
+#: btdownloadgui.py:472
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Activitytay Ogglay"
+
+#: btdownloadgui.py:529
+msgid "Save log in:"
+msgstr "Avesay ogglay innay:"
+
+#: btdownloadgui.py:540
+msgid "log saved"
+msgstr "oglay avedsay"
+
+#: btdownloadgui.py:599
+msgid "log cleared"
+msgstr "ogglay earedclay"
+
+#: btdownloadgui.py:611
+#, python-format
+msgid "%s Settings"
+msgstr "%s Ettingssay"
+
+#: btdownloadgui.py:622
+msgid "Saving"
+msgstr "Avingsay"
+
+#: btdownloadgui.py:624
+msgid "Save new downloads in:"
+msgstr "Avesay oonay ownloadsday inay:"
+
+#: btdownloadgui.py:637
+msgid "Change..."
+msgstr "Angechay..."
+
+#: btdownloadgui.py:641
+msgid "Ask where to save each new download"
+msgstr "Askay erewhay ootay avesay eachay oonay ownloaday"
+
+#: btdownloadgui.py:655
+msgid "Downloading"
+msgstr "Ownloadingday"
+
+#: btdownloadgui.py:657
+msgid "Starting additional torrents manually:"
+msgstr "Artingsay additionalay orrentstay anuallymay:"
+
+#: btdownloadgui.py:666
+msgid "Always stops the _last running torrent"
+msgstr "Alwaysay opstay uhthay ast_lay unningray orrentay"
+
+#: btdownloadgui.py:672
+msgid "Always starts the torrent in _parallel"
+msgstr "Alwaysay artsstay uhthay orrenttay innay arralella_pay"
+
+#: btdownloadgui.py:678
+msgid "_Asks each time"
+msgstr "_Asksays eachay imetay"
+
+#: btdownloadgui.py:692
+msgid "Seed completed torrents:"
+msgstr "Eedsay ompletedkay orrentstay:"
+
+#: btdownloadgui.py:700 btdownloadgui.py:729
+msgid "until share ratio reaches "
+msgstr "untilay areshay atioray eachesray "
+
+#: btdownloadgui.py:706
+msgid " percent, or"
+msgstr " ercentpay, or"
+
+#: btdownloadgui.py:712
+msgid "for "
+msgstr "orfay "
+
+#: btdownloadgui.py:718
+msgid " minutes, whichever comes first."
+msgstr " inutesmay, icheverwhay omeskay irstfay."
+
+#: btdownloadgui.py:725
+msgid "Seed last completed torrent:"
+msgstr "Eedsay astlay ompleted orrentay:"
+
+#: btdownloadgui.py:735
+msgid " percent."
+msgstr " ercentpay."
+
+#: btdownloadgui.py:741
+msgid "\"0 percent\" means seed forever."
+msgstr "\"0 ercentpay\" eansmay eedsay oreverfay."
+
+#: btdownloadgui.py:750
+msgid "Network"
+msgstr "Etworknay"
+
+#: btdownloadgui.py:752
+msgid "Look for available port:"
+msgstr "Ooklay orfay availablay ortpay:"
+
+#: btdownloadgui.py:755
+msgid "starting at port: "
+msgstr "artingsay attay ortpay:"
+
+#: btdownloadgui.py:768
+msgid "IP to report to the tracker:"
+msgstr "IPay ootay eportray ootay uhthay ackertray:"
+
+#: btdownloadgui.py:773
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Ashay onay effectay unlessay ooyay areay onay uhthay\n"
+"amesay ocalay etworknay asay uhthay ackertray)"
+
+#: btdownloadgui.py:778
+msgid "Potential Windows TCP stack fix"
+msgstr "Otentialpay Indowsway TCPay ackstay ixfay."
+
+#: btdownloadgui.py:792
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Ogresspray arbay exttay isay alwaysay ackblay\n"
+"(equiresray estartray)"
+
+#: btdownloadgui.py:805
+msgid "Misc"
+msgstr "Iscmay"
+
+#: btdownloadgui.py:812
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"ARNINGWAY: Angingchay eesethay ettingsay ankay\n"
+"eventpray %s omfray unctioningfay orrectlykay."
+
+#: btdownloadgui.py:820
+msgid "Option"
+msgstr "Optionay"
+
+#: btdownloadgui.py:825
+msgid "Value"
+msgstr "Aluevay"
+
+#: btdownloadgui.py:832
+msgid "Advanced"
+msgstr "Advanceday"
+
+#: btdownloadgui.py:841
+msgid "Choose default download directory"
+msgstr "Oosechay efaultay ownloaday irectoryday"
+
+#: btdownloadgui.py:902
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Ilesfay inay \"%s\""
+
+#: btdownloadgui.py:911
+msgid "Apply"
+msgstr "Applyay"
+
+#: btdownloadgui.py:912
+msgid "Allocate"
+msgstr "Allocatay"
+
+#: btdownloadgui.py:913
+msgid "Never download"
+msgstr "Evernay ownloadday"
+
+#: btdownloadgui.py:914
+msgid "Decrease"
+msgstr "Ecreaseday"
+
+#: btdownloadgui.py:915
+msgid "Increase"
+msgstr "Increaseay"
+
+#: btdownloadgui.py:925 btlaunchmanycurses.py:142
+msgid "Filename"
+msgstr "Ilenamefay"
+
+#: btdownloadgui.py:925
+msgid "Length"
+msgstr "Engthlay"
+
+#: btdownloadgui.py:925
+msgid "%"
+msgstr "%"
+
+#: btdownloadgui.py:1089
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Eerspay orfay \"%s\""
+
+#: btdownloadgui.py:1095
+msgid "IP address"
+msgstr "IPay addressay"
+
+#: btdownloadgui.py:1095
+msgid "Client"
+msgstr "Ientclay"
+
+#: btdownloadgui.py:1095
+msgid "Connection"
+msgstr "Onnectionkay"
+
+#: btdownloadgui.py:1095
+msgid "KB/s down"
+msgstr "KB/say ownday"
+
+#: btdownloadgui.py:1095
+msgid "KB/s up"
+msgstr "KB/s upay"
+
+#: btdownloadgui.py:1095
+msgid "MB downloaded"
+msgstr "MBay ownloadeday"
+
+#: btdownloadgui.py:1095
+msgid "MB uploaded"
+msgstr "MBay uploadeday"
+
+#: btdownloadgui.py:1095
+#, python-format
+msgid "% complete"
+msgstr "%s completay"
+
+#: btdownloadgui.py:1095
+msgid "KB/s est. peer download"
+msgstr "KB/say estay. eerpay ownloadeday"
+
+#: btdownloadgui.py:1101
+msgid "Peer ID"
+msgstr "Eerpay IDay"
+
+#: btdownloadgui.py:1104 btdownloadgui.py:1107
+msgid "Interested"
+msgstr "Interesteday"
+
+#: btdownloadgui.py:1104 btdownloadgui.py:1107
+msgid "Choked"
+msgstr "Okedchay"
+
+#: btdownloadgui.py:1104
+msgid "Snubbed"
+msgstr "Ubbedsnay"
+
+#: btdownloadgui.py:1107
+msgid "Optimistic upload"
+msgstr "Optimisticay uploaday"
+
+#: btdownloadgui.py:1188
+msgid "remote"
+msgstr "emoteray"
+
+#: btdownloadgui.py:1188
+msgid "local"
+msgstr "ocallay"
+
+#: btdownloadgui.py:1224
+msgid "bad peer"
+msgstr "adbay eerpay"
+
+#: btdownloadgui.py:1234
+#, python-format
+msgid "%d ok"
+msgstr "%d okay"
+
+#: btdownloadgui.py:1235
+#, python-format
+msgid "%d bad"
+msgstr "%d adbay"
+
+#: btdownloadgui.py:1237
+msgid "banned"
+msgstr "annedbay"
+
+#: btdownloadgui.py:1239
+msgid "ok"
+msgstr "okay"
+
+#: btdownloadgui.py:1275
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Infoay orfay \"%s\""
+
+#: btdownloadgui.py:1293
+msgid "Torrent name:"
+msgstr "Orrenttay amenay:"
+
+#: btdownloadgui.py:1298
+msgid "(trackerless torrent)"
+msgstr "(ackerlesstray orrenttray)"
+
+#: btdownloadgui.py:1301
+msgid "Announce url:"
+msgstr "Announceay urllay"
+
+#: btdownloadgui.py:1305
+msgid ", in one file"
+msgstr ", inay oneay ilefay"
+
+#: btdownloadgui.py:1307
+#, python-format
+msgid ", in %d files"
+msgstr ", inay %d ilesfay"
+
+#: btdownloadgui.py:1308
+msgid "Total size:"
+msgstr "Otaltay izesay:"
+
+#: btdownloadgui.py:1315
+msgid "Pieces:"
+msgstr "Icespay:"
+
+#: btdownloadgui.py:1317
+msgid "Info hash:"
+msgstr "Infoay ashhay:"
+
+#: btdownloadgui.py:1327
+msgid "Save in:"
+msgstr "Avesay innay:"
+
+#: btdownloadgui.py:1331
+msgid "File name:"
+msgstr "Ilefay amenay:"
+
+#: btdownloadgui.py:1357
+msgid "Open directory"
+msgstr "Openay irectoryday"
+
+#: btdownloadgui.py:1362
+msgid "Show file list"
+msgstr "Owshay ilefay istlay"
+
+#: btdownloadgui.py:1457
+msgid "Torrent info"
+msgstr "Orrenttay infoay"
+
+#: btdownloadgui.py:1466 btdownloadgui.py:1894
+msgid "Remove torrent"
+msgstr "Emoveray orrentay"
+
+#: btdownloadgui.py:1470
+msgid "Abort torrent"
+msgstr "Abortay orrentay"
+
+#: btdownloadgui.py:1528
+#, python-format
+msgid ", will seed for %s"
+msgstr ", illway eedsay orfay %s"
+
+#: btdownloadgui.py:1530
+msgid ", will seed indefinitely."
+msgstr ", illway eedsay indefinitelay"
+
+#: btdownloadgui.py:1533
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Oneday, areshay atioray: %d%%"
+
+#: btdownloadgui.py:1536
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Oneday, %s uploadeday"
+
+#: btdownloadgui.py:1568
+msgid "Torrent _info"
+msgstr "Orrentay _infoay"
+
+#: btdownloadgui.py:1569
+msgid "_Open directory"
+msgstr "_Openay irectoryday"
+
+#: btdownloadgui.py:1570
+msgid "_Change location"
+msgstr "Ange_chay ocationlay"
+
+#: btdownloadgui.py:1572
+msgid "_File list"
+msgstr "Ile_fay istlay"
+
+#: btdownloadgui.py:1650
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Areay ooyay ureshay ooyay auntway ootay emoveray \"%s\"?"
+
+#: btdownloadgui.py:1653
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Oryay areshay atioray orfay issthay orrenttay isay %d%%. "
+
+#: btdownloadgui.py:1655
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Ooyay avehay uploadeday %s ootay isthay orrenttay. "
+
+#: btdownloadgui.py:1658
+msgid "Remove this torrent?"
+msgstr "Emoveray isthay orrentay?"
+
+#: btdownloadgui.py:1677
+msgid "Finished"
+msgstr "Inishedfay"
+
+#: btdownloadgui.py:1678
+msgid "drag into list to seed"
+msgstr "aggdray intoay istlay ootay eedsay"
+
+#: btdownloadgui.py:1681
+msgid "Failed"
+msgstr "Ailedfay"
+
+#: btdownloadgui.py:1682
+msgid "drag into list to resume"
+msgstr "aggdray intoay istlay ootay esumeray"
+
+#: btdownloadgui.py:1691
+msgid "Re_start"
+msgstr "E_startray"
+
+#: btdownloadgui.py:1692 btdownloadgui.py:1763 btdownloadgui.py:1799
+#: btdownloadgui.py:1904
+msgid "_Remove"
+msgstr "Emove_ray"
+
+#: btdownloadgui.py:1742
+msgid "Waiting"
+msgstr "Aitingway"
+
+#: btdownloadgui.py:1762 btdownloadgui.py:1798 btdownloadgui.py:1903
+msgid "_Finish"
+msgstr "Inish_fay"
+
+#: btdownloadgui.py:1765 btdownloadgui.py:1794 btdownloadgui.py:1899
+msgid "_Abort"
+msgstr "Abort_ay"
+
+#: btdownloadgui.py:1780
+msgid "Paused"
+msgstr "Ausedpay"
+
+#: btdownloadgui.py:1821
+msgid "Running"
+msgstr "Unningray"
+
+#: btdownloadgui.py:1845
+#, python-format
+msgid "Current up: %s"
+msgstr "Urrentkay upay: %s"
+
+#: btdownloadgui.py:1846
+#, python-format
+msgid "Current down: %s"
+msgstr "Urrentkay ownday: %s"
+
+#: btdownloadgui.py:1852
+#, python-format
+msgid "Previous up: %s"
+msgstr "Eviouspray upay: %s"
+
+#: btdownloadgui.py:1853
+#, python-format
+msgid "Previous down: %s"
+msgstr "Eviouspray ownday: %s"
+
+#: btdownloadgui.py:1859
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Areshay atioray: %0.02f%%"
+
+#: btdownloadgui.py:1862
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s eerspay, %s eedsay. Otalstay omfray ackertray: %s"
+
+#: btdownloadgui.py:1866
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Istributeday opieskay: %d; Extnay: %s"
+
+#: btdownloadgui.py:1869
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Icespay: %d otaltay, %d ompletekay, %d artialpay, %d activeay (%d emptyay)"
+
+#: btdownloadgui.py:1873
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d adbay icespay + %s inay iscarded equestsray"
+
+#: btdownloadgui.py:1907
+msgid "_Peer list"
+msgstr "_Eerpay istlay"
+
+#: btdownloadgui.py:1966
+msgid "Done"
+msgstr "Oneday"
+
+#: btdownloadgui.py:1981
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% oneday, %s emainingray"
+
+#: btdownloadgui.py:1989
+msgid "Download rate"
+msgstr "Ownloadday ateray"
+
+#: btdownloadgui.py:1991
+msgid "Upload rate"
+msgstr "Uploaday ateray"
+
+#: btdownloadgui.py:2006
+msgid "NA"
+msgstr "NAay"
+
+#: btdownloadgui.py:2347
+#, python-format
+msgid "%s started"
+msgstr "%s artedstay"
+
+#: btdownloadgui.py:2360
+msgid "_Open torrent file"
+msgstr "_Openay orrenttay ilefay"
+
+#: btdownloadgui.py:2361
+msgid "Make _new torrent"
+msgstr "Akemay oo_nay orrenttay"
+
+#: btdownloadgui.py:2364
+msgid "_Pause/Play"
+msgstr "Ause_pay/Ayplay"
+
+#: btdownloadgui.py:2366
+msgid "_Quit"
+msgstr "It_quay"
+
+#: btdownloadgui.py:2368
+msgid "Show/Hide _finished torrents"
+msgstr "Owshay/Idehay inished_fay orrenttsay"
+
+#: btdownloadgui.py:2370
+msgid "_Resize window to fit"
+msgstr "Esize_ray indoway ootay itfay"
+
+#: btdownloadgui.py:2372
+msgid "_Log"
+msgstr "Ogg_lay"
+
+#: btdownloadgui.py:2375
+msgid "_Settings"
+msgstr "Etting_say"
+
+#: btdownloadgui.py:2378 btdownloadgui.py:2394
+msgid "_Help"
+msgstr "Elp_hay"
+
+#: btdownloadgui.py:2380
+msgid "_About"
+msgstr "_Aboutay"
+
+#: btdownloadgui.py:2381
+msgid "_Donate"
+msgstr "Onate_day"
+
+#: btdownloadgui.py:2385
+msgid "_File"
+msgstr "Ile_fay"
+
+#: btdownloadgui.py:2390
+msgid "_View"
+msgstr "Iew_vay"
+
+#: btdownloadgui.py:2535
+msgid "(stopped)"
+msgstr "(oppedstay)"
+
+#: btdownloadgui.py:2547
+msgid "(multiple)"
+msgstr "(ultiplemay)"
+
+#: btdownloadgui.py:2661
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s elphay isay attay \n"
+"%s\n"
+"Ouldway ooyay ikelay ootay ogay erethay ownay?"
+
+#: btdownloadgui.py:2664
+msgid "Visit help web page?"
+msgstr "Isitvay elphay ebway agepay?"
+
+#: btdownloadgui.py:2700
+msgid "There is one finished torrent in the list. "
+msgstr "Erethay isay oneay inishedfay orrenttay inay uhthay istlay. "
+
+#: btdownloadgui.py:2701
+msgid "Do you want to remove it?"
+msgstr "Ooday ooyay antway ootay emoveray itay?"
+
+#: btdownloadgui.py:2703
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Erethaay areay %d inishedfay orrentstay inay uhthay istlay. "
+
+#: btdownloadgui.py:2704
+msgid "Do you want to remove all of them?"
+msgstr "Ooday ooyay antway ootay emoveray allay ofay emthay?"
+
+#: btdownloadgui.py:2706
+msgid "Remove all finished torrents?"
+msgstr "Emoveray allay inishedfay orrentstay?"
+
+#: btdownloadgui.py:2713
+msgid "No finished torrents"
+msgstr "Onay inishedfay orrentstay"
+
+#: btdownloadgui.py:2714
+msgid "There are no finished torrents to remove."
+msgstr "Erethay areay onay inishedfay orrentstay ootay emoveray."
+
+#: btdownloadgui.py:2758
+msgid "Open torrent:"
+msgstr "Openay orrenttay:"
+
+#: btdownloadgui.py:2791
+msgid "Change save location for "
+msgstr "Angechay avesay ocationlay orfay "
+
+#: btdownloadgui.py:2817
+msgid "File exists!"
+msgstr "Ilefay existsay!"
+
+#: btdownloadgui.py:2818
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+"\"%s\" alreadyday existsay. Ooday ooyay antway ootay oosechay ay ifferentday "
+"ilefay amenay?"
+
+#: btdownloadgui.py:2836
+msgid "Save location for "
+msgstr "Avesay ocationlay orfay "
+
+#: btdownloadgui.py:2946
+#, python-format
+msgid "(global message) : %s"
+msgstr "(obalglay essagemay) : %s"
+
+#: btdownloadgui.py:2953
+#, python-format
+msgid "%s Error"
+msgstr "%s Erroray"
+
+#: btdownloadgui.py:2959
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Ultiplemay errorsay avehay occurreday. Ickclay OKay toay iewvay uhthay "
+"erroray ogglay."
+
+#: btdownloadgui.py:3089
+msgid "Stop running torrent?"
+msgstr "Opstay unningray orrenttay?"
+
+#: btdownloadgui.py:3090
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop the last running torrent "
+"as well?"
+msgstr ""
+"Ooyay areay aboutay ootay artstay \"%s\". OOday ooyay antway ootay opstay "
+"uhthay astlay unningray orrenttay asay ellway?"
+
+#: btdownloadgui.py:3100
+msgid "Have you donated?"
+msgstr "Avehay ooyay onatedday?"
+
+#: btdownloadgui.py:3101
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Elcomeway ootay uhthay ewnay ersionvay of %s. Avehay ooyay onatedday?"
+
+#: btdownloadgui.py:3115
+msgid "Thanks!"
+msgstr "Anksthay!"
+
+#: btdownloadgui.py:3116
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Anksthay orfay onatingday! Ootay onateday againay, electsay \"Onateday\" "
+"omfray uthay\"Elphay\" enumay."
+
+#: btdownloadgui.py:3145
+msgid "Can't have both --responsefile and non-option arguments"
+msgstr "Antkay avehay othbay --esponsefileray anday on-optionay argumentsay"
+
+#: btdownloadgui.py:3176
+msgid "Temporary Internet Files"
+msgstr "Temporary Internet Files"
+
+#: btdownloadgui.py:3177
+#, python-format
+msgid ""
+"Could not read %s: %s. You are probably using a broken Internet Explorer "
+"version that passed BitTorrent a filename that doesn't exist. To work around "
+"the problem, try clearing your Temporary Internet Files or right-click the "
+"link and save the .torrent file to disk first."
+msgstr ""
+"Ouldcay ottnay eadray %s: %s. Ooyay areay obbablypray usingay ay okenbray "
+"Internetay Exploreray ersionvay atthay assedpay ItTorrentBay ay ilenamefay "
+"atthay osen'tday existay. Ootay orkway arounday uhthay obblempray, ytray "
+"earingklay ouryay Emporarytay Internetay Ilesfay oray ightay-icklay uhhthay "
+"inklay anday avesay uhhthay orrenttay ilefay ootay iskday."
+
+#: btdownloadgui.py:3186 btdownloadgui.py:3207
+#, , python-format
+msgid "Could not read %s"
+msgstr "Ouldkay ottnay eadwray %s "
+
+#: btdownloadgui.py:3191
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr "Ouldkay ottnay ownloadday oray openay\n"
+"%s\n"
+"Ytray usingay ay ebbway owserray ootay ownloadday uhthay orrenttay ilefay."
+
+#: btdownloadgui.py:3218
+#, python-format
+msgid "%s already running"
+msgstr "%s alreadyay unningray"
+
+#: btmaketorrentgui.py:55
+#, , python-format
+msgid "%s torrent file creator %s"
+msgstr "%s orrenttay ilefay eatorcray %s"
+
+#: btmaketorrentgui.py:67
+msgid "Make torrent file for this file/directory:"
+msgstr "Akemay orrenttay ilefay orfay isthay ilefay/irectoryday:"
+
+#: btmaketorrentgui.py:72
+msgid "Choose..."
+msgstr "Oosechay..."
+
+#: btmaketorrentgui.py:82
+msgid "(Directories will become batch torrents)"
+msgstr "(Irectoriesday illway ecomebay atchbay orrentstay)"
+
+#: btmaketorrentgui.py:93
+msgid "Piece size:"
+msgstr "Iecepay izesay:"
+
+#: btmaketorrentgui.py:110
+msgid "Use _tracker:"
+msgstr "Ueseay acker_tray"
+
+#: btmaketorrentgui.py:140
+msgid "Use _DHT:"
+msgstr "Useay _DHTay"
+
+#: btmaketorrentgui.py:146
+msgid "Nodes (optional):"
+msgstr "Odesnay (optionalay)"
+
+#: btmaketorrentgui.py:179
+msgid "Comments:"
+msgstr "Ommentskay:"
+
+#: btmaketorrentgui.py:209
+msgid "Make"
+msgstr "Akemay"
+
+#: btmaketorrentgui.py:357
+msgid "_Host"
+msgstr "Ost_hay"
+
+#: btmaketorrentgui.py:364
+msgid "_Port"
+msgstr "Ort_pay"
+
+#: btmaketorrentgui.py:457
+msgid "Building torrents..."
+msgstr "Uildingbay orrentstay..."
+
+#: btmaketorrentgui.py:465
+msgid "Checking file sizes..."
+msgstr "Eckingchay ilefay izesay..."
+
+#: btmaketorrentgui.py:483
+msgid "Start seeding"
+msgstr "Artstay eedingsay"
+
+#: btmaketorrentgui.py:503
+msgid "building "
+msgstr "uildingbay "
+
+#: btmaketorrentgui.py:523
+msgid "Done."
+msgstr "Oneday."
+
+#: btmaketorrentgui.py:524
+msgid "Done building torrents."
+msgstr "Oneday uildingbay orrentstay."
+
+#: btmaketorrentgui.py:532
+msgid "Error!"
+msgstr "Erroray!"
+
+#: btmaketorrentgui.py:533
+msgid "Error building torrents: "
+msgstr "Erroray uildingbay orrentstay:"
+
+#: BitTorrent/GUI.py:152
+#, python-format
+msgid "%d days"
+msgstr "%d aysday"
+
+#: BitTorrent/GUI.py:154
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 ayday %d ourshay"
+
+#: BitTorrent/GUI.py:156
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ourshay"
+
+#: BitTorrent/GUI.py:158
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d inutesmay"
+
+#: BitTorrent/GUI.py:160
+#, python-format
+msgid "%d seconds"
+msgstr "%d econdsay"
+
+#: BitTorrent/GUI.py:162
+msgid "0 seconds"
+msgstr "0 econdsay"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "%s Help"
+msgstr "%s Elphay"
+
+#: BitTorrent/GUI.py:211
+msgid "Frequently Asked Questions:"
+msgstr "Equentlyfray Askeday Estionsquay"
+
+#: BitTorrent/GUI.py:216
+msgid "Go"
+msgstr "Ogay"
+
+#: BitTorrent/GUI.py:437 BitTorrent/GUI.py:489
+msgid "Choose an existing folder..."
+msgstr "Oosechay anay existingay olderfay"
+
+#: BitTorrent/GUI.py:447
+msgid "All Files"
+msgstr "Allay Ilesfay"
+
+#: BitTorrent/GUI.py:452
+msgid "Torrents"
+msgstr "Orrentstay"
+
+#: BitTorrent/GUI.py:486
+msgid "Create a new folder..."
+msgstr "Eatecray ay ewnay olderfay"
+
+#: BitTorrent/GUI.py:548
+msgid "Select a file"
+msgstr "Electsay an ilefay"
+
+#: BitTorrent/GUI.py:549
+msgid "Select a folder"
+msgstr "Electsay an olderfay"
+
+#: BitTorrent/TorrentQueue.py:120
+msgid "Could not load saved state: "
+msgstr "ouldcay otnay oadlay avedsay atestay"
+
+#: BitTorrent/TorrentQueue.py:160
+msgid "Version check failed: no DNS library"
+msgstr "ersionvay eckchay ailedfay: onay DNSay ibrarylay"
+
+#: BitTorrent/TorrentQueue.py:177
+msgid "DNS query failed"
+msgstr "DNSay eryquay ailedfay"
+
+#: BitTorrent/TorrentQueue.py:179
+msgid "number of received TXT fields is not 1"
+msgstr "umbernay ofay ecievedray TXT ieldsfay isay ottnay 1"
+
+#: BitTorrent/TorrentQueue.py:182
+msgid "number of strings in reply is not 1?"
+msgstr "umbernay ofay ingstray inay eplyray isay otnay 1?"
+
+#: BitTorrent/TorrentQueue.py:192
+msgid "Could not parse new version string"
+msgstr "Ouldkay ottnay arsepay oonay ersionvay ingstray"
+
+#: BitTorrent/TorrentQueue.py:202
+#, python-format
+msgid ""
+"A newer version of BitTorrent is available.\n"
+"You can always get the latest version from\n"
+"%s."
+msgstr ""
+"ay ewernay ersionvay ofay itTorrentBay isay availablay.\n"
+"ouyay ancay alwaysay etgay ethay atestlay ersionvay omfray\n"
+"%s."
+
+#: BitTorrent/TorrentQueue.py:207
+msgid "Version check failed: "
+msgstr "Ersionvay eckchay ailedfay:"
+
+#: BitTorrent/TorrentQueue.py:244
+msgid "Could not save UI state: "
+msgstr "Ouldkay ottnay avesay UI atestay:"
+
+#: BitTorrent/TorrentQueue.py:254 BitTorrent/TorrentQueue.py:256
+#: BitTorrent/TorrentQueue.py:329 BitTorrent/TorrentQueue.py:332
+#: BitTorrent/TorrentQueue.py:342 BitTorrent/TorrentQueue.py:354
+#: BitTorrent/TorrentQueue.py:371
+msgid "Invalid state file contents"
+msgstr "invaliday stastay ilefay ontentscay"
+
+#: BitTorrent/TorrentQueue.py:269
+msgid "Error reading file "
+msgstr "Erroray eadingray ilefay"
+
+#: BitTorrent/TorrentQueue.py:271
+msgid "cannot restore state completely"
+msgstr "annotkay estoreray atestay ompletelykay"
+
+#: BitTorrent/TorrentQueue.py:274
+msgid "Invalid state file (duplicate entry)"
+msgstr "Invaliday atestay ilefay (uplicateday entryay)"
+
+#: BitTorrent/TorrentQueue.py:280 BitTorrent/TorrentQueue.py:285
+msgid "Corrupt data in "
+msgstr "Orruptkay ataday inay"
+
+#: BitTorrent/TorrentQueue.py:281 BitTorrent/TorrentQueue.py:286
+msgid " , cannot restore torrent ("
+msgstr ", annotkay estoreray orrenttay ("
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Invalid state file (bad entry)"
+msgstr "Invaliday atestay ilefay (adbay entryay)"
+
+#: BitTorrent/TorrentQueue.py:319
+msgid "Bad UI state file"
+msgstr "adbay UIay atestay ilefay"
+
+#: BitTorrent/TorrentQueue.py:323
+msgid "Bad UI state file version"
+msgstr "adbay UIay atestay ilefay ersionvay"
+
+#: BitTorrent/TorrentQueue.py:325
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"unsupporteday UIay atestay ilefay ersionvay (omfray ewernay ientclay "
+"ersionvay?)"
+
+#: BitTorrent/TorrentQueue.py:499
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "ouldcay otnay eleteday achedcay %s ilefay: --ross"
+
+#: BitTorrent/TorrentQueue.py:523
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "isthay isay otnay ay alidvay orrentay ilefay. (%s) --ross"
+
+#: BitTorrent/TorrentQueue.py:531
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+"Isthay orrentay (oray onay ithway ethay amesay ontentscay) isay readyalay "
+"unningray."
+
+#: BitTorrent/TorrentQueue.py:535
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Isthay orrentay (oray onay ithway ethay amesay ontentscay) isay readyalay "
+"aitingway ootay unray."
+
+#: BitTorrent/TorrentQueue.py:542
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Orrenttay inay unknownay atestay %d"
+
+#: BitTorrent/TorrentQueue.py:559
+msgid "Could not write file "
+msgstr "Ouldkay ottnay itewray ilefay"
+
+#: BitTorrent/TorrentQueue.py:561
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"orrenttay illway ottnay ebay estartedray orrectlykay onay ientclay estartray"
+
+#: BitTorrent/TorrentQueue.py:648
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Antkay unray oremay anthay %d orrentstay imultaneouslysay. Orfa oremay "
+"infoay eesay uhhthay AQFay atay %s."
+
+#: BitTorrent/TorrentQueue.py:762
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr "Ottnay artingstay orrenttay asay erethay areay otheray orrentstay aitingway ootay unray, anday isthay oneay alreadyay eetsmay uhthay ettingsay orfay enwhay ootay opstay eedingsay."
+
+#: BitTorrent/TorrentQueue.py:768
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr "Ottnay artingstay orrenttay asay alreadyay eetsmay uhthay ettingsay orfay enwhay ootay opstay eedingsay uhthay astlay ompletedkay orrenttay."
+
+#: BitTorrent/defaultargs.py:32
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr "Irectoryday underay ichwhay ariablevay ataday uchsay asay astresumefay informationay anday UIGay atestay isay avedsay. Efaultsday ootay ubdirectorysay 'ataday' ofay uhhthay ittorrentbay onfigcay irectoryday."
+
+#: BitTorrent/defaultargs.py:36
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:40
+msgid "ISO Language code to use"
+msgstr "ISOay Anguagelay odecay ootay useyay"
+
+#: BitTorrent/defaultargs.py:45
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:51
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:53
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:55 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:57
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:59
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:63
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:65
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:68
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:70
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:72
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:74
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:85
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:91
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:93
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:96 BitTorrent/defaultargs.py:98
+msgid "maximum amount of time to guess the current rate estimate represents"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:100
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:102
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:109
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:112
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:114
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:116
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "force max_allow_in to stay below 30 on Win32"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:139
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:146
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:149
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:152
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:155
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:157
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:178 BitTorrent/defaultargs.py:198
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:188
+msgid "file the server response was stored in, alternative to url"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:190
+msgid "url to get file from, alternative to responsefile"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:192
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:208 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:210
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:232
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:237
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:242
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:244
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:247
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: btdownloadcurses.py:45 btlaunchmanycurses.py:39
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: btdownloadcurses.py:47 btlaunchmanycurses.py:41
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: btdownloadcurses.py:52 btlaunchmanycurses.py:46
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: btdownloadcurses.py:57 btdownloadheadless.py:39
+msgid "download complete!"
+msgstr ""
+
+#: btdownloadcurses.py:62 btdownloadheadless.py:44
+msgid "<unknown>"
+msgstr ""
+
+#: btdownloadcurses.py:65 btdownloadheadless.py:47
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: btdownloadcurses.py:152
+msgid "file:"
+msgstr ""
+
+#: btdownloadcurses.py:153
+msgid "size:"
+msgstr ""
+
+#: btdownloadcurses.py:154
+msgid "dest:"
+msgstr ""
+
+#: btdownloadcurses.py:155
+msgid "progress:"
+msgstr ""
+
+#: btdownloadcurses.py:156
+msgid "status:"
+msgstr ""
+
+#: btdownloadcurses.py:157
+msgid "dl speed:"
+msgstr ""
+
+#: btdownloadcurses.py:158
+msgid "ul speed:"
+msgstr ""
+
+#: btdownloadcurses.py:159
+msgid "sharing:"
+msgstr ""
+
+#: btdownloadcurses.py:160
+msgid "seeds:"
+msgstr ""
+
+#: btdownloadcurses.py:161
+msgid "peers:"
+msgstr ""
+
+#: btdownloadcurses.py:170 btdownloadheadless.py:94
+msgid "download succeeded"
+msgstr ""
+
+#: btdownloadcurses.py:227 btdownloadheadless.py:128
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: btdownloadcurses.py:230 btdownloadheadless.py:131
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: btdownloadcurses.py:236
+#, , python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d eensay ownay, usplay %d istributedday opieskay (%s)"
+
+#: btdownloadcurses.py:241 btdownloadheadless.py:142
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: btdownloadcurses.py:243 btdownloadheadless.py:144
+#, python-format
+msgid "%d seen now"
+msgstr "%d eensay ownay"
+
+#: btdownloadcurses.py:263
+msgid "error(s):"
+msgstr ""
+
+#: btdownloadcurses.py:272
+msgid "error:"
+msgstr ""
+
+#: btdownloadcurses.py:275
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: btdownloadcurses.py:320
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: btdownloadcurses.py:354 btdownloadheadless.py:219
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: btdownloadcurses.py:372 btdownloadheadless.py:237
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: btdownloadcurses.py:379 btdownloadheadless.py:244
+#: BitTorrent/launchmanycore.py:232
+msgid "Error reading config: "
+msgstr ""
+
+#: btdownloadcurses.py:422 btdownloadheadless.py:287
+msgid "must have responsefile as arg or parameter, not both"
+msgstr ""
+
+#: btdownloadcurses.py:435 btdownloadheadless.py:300
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: btdownloadcurses.py:437 btdownloadheadless.py:302
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: btdownloadcurses.py:447
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: btdownloadheadless.py:137
+#, , python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d eensay ownay, usplay %d istributedday opieskay (%s)"
+
+#: btdownloadheadless.py:147
+msgid "ERROR:\n"
+msgstr "ERRORAY:\n"
+
+#: btdownloadheadless.py:148
+msgid "saving: "
+msgstr ""
+
+#: btdownloadheadless.py:149
+msgid "percent done: "
+msgstr ""
+
+#: btdownloadheadless.py:150
+msgid "time left: "
+msgstr ""
+
+#: btdownloadheadless.py:151
+msgid "download to: "
+msgstr ""
+
+#: btdownloadheadless.py:152
+msgid "download rate: "
+msgstr ""
+
+#: btdownloadheadless.py:153
+msgid "upload rate: "
+msgstr ""
+
+#: btdownloadheadless.py:154
+msgid "share rating: "
+msgstr ""
+
+#: btdownloadheadless.py:155
+msgid "seed status: "
+msgstr ""
+
+#: btdownloadheadless.py:156
+msgid "peer status: "
+msgstr ""
+
+#: btlaunchmany.py:35 btlaunchmanycurses.py:227
+msgid "no torrents"
+msgstr ""
+
+#: btlaunchmany.py:49 btlaunchmanycurses.py:265
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: btlaunchmany.py:64 btlaunchmanycurses.py:285
+msgid "Warning: "
+msgstr ""
+
+#: btlaunchmany.py:64 btlaunchmanycurses.py:285
+msgid " is not a directory"
+msgstr ""
+
+#: btlaunchmany.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: btlaunchmany.py:71 btlaunchmanycurses.py:292
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: btlaunchmanycurses.py:58 BitTorrent/launchmanycore.py:142
+msgid "connecting to peers"
+msgstr ""
+
+#: btlaunchmanycurses.py:59
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: btlaunchmanycurses.py:143
+msgid "Size"
+msgstr ""
+
+#: btlaunchmanycurses.py:144
+msgid "Download"
+msgstr ""
+
+#: btlaunchmanycurses.py:145
+msgid "Upload"
+msgstr ""
+
+#: btlaunchmanycurses.py:146 btlaunchmanycurses.py:239
+msgid "Totals:"
+msgstr ""
+
+#: btlaunchmanycurses.py:205
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s up %s dn"
+msgstr ""
+
+#: btlaunchmanycurses.py:287 BitTorrent/track.py:850
+msgid "error: "
+msgstr ""
+
+#: btlaunchmanycurses.py:287
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: btmaketorrent.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: btmaketorrent.py:31
+msgid "optional target file for the torrent"
+msgstr "optionalay argettay ilefay orfay uhthay orrenttay"
+
+#: btreannounce.py:22
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: btreannounce.py:31
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: btrename.py:26
+#, python-format
+msgid "%s %s - change the suggested filename in a .torrent file"
+msgstr ""
+
+#: btrename.py:31
+#, python-format
+msgid "Usage: %s TORRENTFILE NEW_FILE_NAME"
+msgstr ""
+
+#: btrename.py:38
+#, python-format
+msgid "old filename: %s"
+msgstr ""
+
+#: btrename.py:40
+#, python-format
+msgid "new filename: %s"
+msgstr ""
+
+#: btrename.py:45
+msgid "done."
+msgstr ""
+
+#: btshowmetainfo.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: btshowmetainfo.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: btshowmetainfo.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: btshowmetainfo.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: btshowmetainfo.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: btshowmetainfo.py:37
+msgid "file size:"
+msgstr ""
+
+#: btshowmetainfo.py:38
+msgid "files:"
+msgstr "ilesfay:"
+
+#: btshowmetainfo.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: btshowmetainfo.py:40
+msgid "archive size:"
+msgstr ""
+
+#: btshowmetainfo.py:41
+#, , python-format
+msgid "tracker announce url: %s"
+msgstr "Ackertray announceay urllay: %s"
+
+#: btshowmetainfo.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: btshowmetainfo.py:43
+msgid "comment:"
+msgstr "Ommentskay:"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:188
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:194
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:206
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:212
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent.Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:217
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/Encoder.py:173
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:20
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:22
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:125
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/RawServer.py:276
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:292
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:375
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:172
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:199
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:210
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:216
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+"Abortingay uhthay orrenttay asay itay-asway ejectedray ybay uthay ackertray "
+"ilewhay otnay onnectedkay ootay anyay eerspay."
+
+#: BitTorrent/Rerequester.py:218
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:224
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:240
+msgid "Fastresume info doesn't match file modification time"
+msgstr ""
+
+#: BitTorrent/Storage.py:243
+msgid "Fastresume data doesn't match actual filesize"
+msgstr ""
+
+#: BitTorrent/Storage.py:257 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/__init__.py:20
+msgid "Python 2.2.1 or newer required"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - bad file value"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:88
+msgid "non-text failure reason"
+msgstr ""
+
+#: BitTorrent/btformats.py:92
+msgid "non-text warning message"
+msgstr ""
+
+#: BitTorrent/btformats.py:97
+msgid "invalid entry in peer list1"
+msgstr ""
+
+#: BitTorrent/btformats.py:99
+msgid "invalid entry in peer list2"
+msgstr ""
+
+#: BitTorrent/btformats.py:102
+msgid "invalid entry in peer list3"
+msgstr ""
+
+#: BitTorrent/btformats.py:106
+msgid "invalid entry in peer list4"
+msgstr ""
+
+#: BitTorrent/btformats.py:108
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:111
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:116
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:119
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:122
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:125
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/configfile.py:125
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/controlsocket.py:108 BitTorrent/controlsocket.py:157
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/controlsocket.py:116 BitTorrent/controlsocket.py:134
+#: BitTorrent/controlsocket.py:166 BitTorrent/controlsocket.py:187
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/controlsocket.py:144
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/controlsocket.py:149
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/download.py:100
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:112
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:114
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:116
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:220
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "Could not load fastresume data: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:278
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:285
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:396 BitTorrent/launchmanycore.py:139
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/download.py:406
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:410
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:413
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:416
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:421
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:426
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:439
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:456
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:479
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:489
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:121
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:234
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parseargs.py:23
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:25
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:31
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:33
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:35
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:66
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:115 BitTorrent/parseargs.py:152
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:121 BitTorrent/parseargs.py:131
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:135
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:142
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:144
+#, python-format
+msgid "Must supply at least %d args."
+msgstr ""
+
+#: BitTorrent/parseargs.py:146
+#, python-format
+msgid "Too many args - %d max."
+msgstr ""
+
+#: BitTorrent/parseargs.py:176
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send in an info message if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:161
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:246
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:269
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:305
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:315
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:457
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:467
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:480
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:494
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:851
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:859
+msgid "# Shutting down: "
+msgstr ""
+
+#~ msgid "_Files/directories"
+#~ msgstr "_Ilesfay/irectoriesday"
+
+#~ msgid "BitTorrent"
+#~ msgstr "ItTorrentBay"
+
+#~ msgid "rate: %s"
+#~ msgstr "ateray: %s"
+
+#~ msgid "Download folder:"
+#~ msgstr "Ownload olderfay"
+
+#~ msgid "Default:"
+#~ msgstr "Efaultday:"
+
+#~ msgid "Download "
+#~ msgstr "Ownloaday "
+
+#~ msgid "\"%s\" already exists. "
+#~ msgstr "\"%s\" alreadayay existsay. "
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..e6ca4a3
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,2867 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 16:53-0500\n"
+"Last-Translator: translate4me <olessia@translate4m3.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Zainstaluj Pythona %s lub większego"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "przestarzałe, nie używaj"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Nie udało się skomunikować z innym procesem %s, ale jeden wydaje się być uruchomiony."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr " Zamknięcie wszystkich okien programu %s może rozwiązać problem."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s jest już uruchomiony"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Nie udało się skomunikować z innm procesem %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Wymagany jest PyGTK %s lub nowszy"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "przeciągnij, aby zmienić kolejność"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "kliknij prawym przyciskiem myszy, aby wyświetlić menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dial-up"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kabel ponad 128k"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kabel ponad 256k"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL ponad 768k"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Podaj adres torrenta"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Podaj adres pliku torrent do otwarcia:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksymalna prędkość wysyłania:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Tymczasowo zatrzymaj wszystkie uruchomione torrenty"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Wznów pobieranie"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Dostępna jest nowa wersja programu %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Dostępna jest nowsza wersja programu %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Używasz wersji %s, a nowa wersja to %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Najnowszą wersję programu można zawsze pobrać z \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Po_bierz później"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Pobierz _teraz"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "P_rzypomnij mi później"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Informacje o programie %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Wersja %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Nie można otworzyć %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Przekaż darowiznę"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Dziennik aktywności programu %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Zachowaj dziennik w:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "zachowano dziennik"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "wyczyszczono dziennik"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Ustawienia programu %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Ogólne"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Uruchom BitTorrenta podczas startu Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Zminimalizuj do zasobnika systemowego"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Zawsze czarny tekst paska postępu\n(wymaga ponownego uruchomienia)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Zachowywanie"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Zachowaj nowe pliki w:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Zmień..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Pytaj, gdzie zachować każdy nowy plik"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Pobieranie"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Podczas uruchamiania nowego torrenta:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "Zatrzymaj inny uruchomiony torrent, aby zwolnić miej_sce"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Nie zatrzymuj innych uruchomionych torrentów"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "Pyt_aj za każdym razem"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seedowanie"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Seeduj zakończone torrenty: aż stosunek udostępniania przekroczy [_] procent, lub po [_] minutach, cokolwiek nastąpi pierwsze."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seeduj na czas nieokreślony"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seeduj ostatnio zakończony torrent: dopóki stosunek udostępniania nie osiągnie [_] procent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Sieć"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Szukaj dostępnego portu:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "zacznij od portu: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Włącz automatyczne mapowanie portu"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Raportowanie IP do trackera:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Nie daje efektu, jeśli jesteś w tej\nsamej sieci lokalnej co tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"OSTRZEŻENIE: Zmienianie tych ustawień może\n przeszkadzać w prawidłowym funkcjonowaniu programu %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opcja"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Wartość"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Zaawansowane"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Wybierz standardowy folder pobierania"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Nie udało się usunąć skrótu: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Pliki w \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nigdy"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nigdy nie pobieraj"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normalnie"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Pobieraj normalnie"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Najpierw"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Najpierw pobierz"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nazwa pliku"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Długość"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Pobierz"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nigdy"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "najpierw"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peery dla \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Adres IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Połączenie"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s pobier."
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s wysył."
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB pobranych"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB wysłanych"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% zakończono"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s szac. pobierania peerów"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID peera"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Zainteresowany"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Zapchany"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Ograniczony"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optymistycznie wysyłanie"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "zdalne"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokalne"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "błędny peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d OK"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d błędnych"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "zabronione"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "OK"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informacje o \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nazwa torrenta:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent beztrackerowy)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Adres ogłoszenia:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr " w jednym pliku"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr " w %d plikach"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Całkowity rozmiar:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Fragmenty:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informacje o hashu:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Zachowaj w:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nazwa pliku:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Otwórz folder"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Wyświetl _listę plików"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informacje o torrencie"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Usuń torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Przerwij torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", będzie seedowany do %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", będzie seedowany przez czas nieokreślony."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Zakończono, stosunek udostępniania: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Zakończono, wysłano %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Zakończono"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informacje o torrencie"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista plików"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Lis_ta peerów"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Zmień położenie"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Seeduj przez czas nieokreślony"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Uruchom _ponownie"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Zakończ"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Usuń"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Przerwij"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Czy na pewno chcesz usunąć \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Stosunek udostępniania dla tego torrenta wynosi %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Wysłano %s do tego torrenta. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Usunąć ten torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Zakończono"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "przeciągnij na listę, aby seedować"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Nieudane"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "przeciągnij na listę, aby wznowić"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Oczekiwanie"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Wstrzymany"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Uruchomiony"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Obecnie wysył.: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Obecnie pobier.: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Poprzednio wysył.: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Poprzednio pobier.: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Stosunek udostępniania: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peerów, %s seedów. Razem z trackera: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Rozprowadzane kopie: %d; Dalej: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Fragmenty: razem %d, zakończono %d, %d częściowo, %d aktywnych (%d pustych)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d błędnych fragmentów + %s w odrzuconych żądaniach"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% ukończono, pozostało %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Prędkość pobierania"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Prędkość wysyłania"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Nie dotyczy"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "Rozpoczęto %s"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Zakończ"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "Za_mknij"
+
+#: bittorrent.py:2788
+msgid "_Open torrent file"
+msgstr "_Otwórz plik torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Otwórz _adres torrenta"
+
+#: bittorrent.py:2790
+msgid "Make _new torrent"
+msgstr "Utwórz _nowy torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Wstrzymaj/wznów"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "Wyświetl/ukryj _zakończone torrenty"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Dopasuj okno"
+
+#: bittorrent.py:2801
+msgid "_Log"
+msgstr "Dzie_nnik"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Ustawienia"
+
+#: bittorrent.py:2807 bittorrent.py:2823
+msgid "_Help"
+msgstr "Pomo_c"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Informacje"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Przekaż darowiznę"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Plik"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Widok"
+
+#: bittorrent.py:2859
+msgid "Search for torrents"
+msgstr "Wyszukaj torrenty"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(zatrzymano)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(wiele)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Pobrano już %s programu instalacyjnego"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Zainstalować nową wersję programu %s?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Czy chcesz teraz zakończyć program %s i zainstalować nową wersję, %s?"
+
+#: bittorrent.py:3176
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Pomoc programu %s dostępna jest na \n%s\nCzy chcesz tam teraz przejść?"
+
+#: bittorrent.py:3179
+msgid "Visit help web page?"
+msgstr "Odwiedzić stronę WWW pomocy?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Jest jeden zakończony torrent na liście. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Czy chcesz go usunąć?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Jest %d zakończonych torrentów na liście. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Czy chcesz je wszystkie usunąć?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Usunąć wszystkie zakończone torrenty?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nie ma żadnych zakończonych torrentów"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nie ma żadnych zakończonych torrentów do usunięcia."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Otwórz torrent:"
+
+#: bittorrent.py:3309
+msgid "Change save location for "
+msgstr "Zmień miejsce zachowywania na "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Plik istnieje!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" już istnieje. Czy chcesz wybrać inną nazwę pliku?"
+
+#: bittorrent.py:3356
+msgid "Save location for "
+msgstr "Miejsce zachowywania dla "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Folder istnieje!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" już istnieje. Czy chcesz utworzyć identyczny duplikat folderu w już istniejącym folderze?"
+
+#: bittorrent.py:3499
+#, python-format
+msgid "(global message) : %s"
+msgstr "(komunikat globalny): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Błąd %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Wystąpiło wiele błędów. Kliknij OK, aby zobaczyć dziennik błędów."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Zatrzymać uruchomiony torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Zaraz uruchomisz \"%s\". Czy chcesz zatrzymać inny uruchomiony torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Przekazałeś już darowiznę?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Witaj w nowej wersji programu %s. Przekazałeś już darowiznę?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Dzięki!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Dziękujemy za przekazanie darowizny! Aby przekazać ponownie, wybierz \"Przekaż darowiznę\" z menu \"Pomoc\"."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Nie można uruchomić kolejki torrenta, zobacz powyższe błędóy."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s twórca pliku torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Utwórz plik torrent dla tego pliku/folderu:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Wybierz..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Foldery staną się torrentami wieloplikowymi)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Rozmiar fragmentu:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Użyj _trackera:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Użyj _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Węzły (opcjonalnie):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komentarze:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Utwórz"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Komputer"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Budowanie torrentów..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Sprawdzanie rozmiarów plików..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Rozpocznij seedowanie"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "budowanie "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Zakończono."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Zakończono budowanie torrentów."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Błąd!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Błąd podczas budowania torrentów: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Wymagany jest GTK %s lub nowszy"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dni"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dzień %d godzin"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d godzin"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minut"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekund"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekund"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Pomoc programu %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Często zadawane pytania:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Przejdź"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Wybierz istniejący folder..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Wszystkie pliki"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrenty"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Utwórz nowy folder..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Wybierz plik"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Wybierz folder"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Nie można wczytać zachowanego stanu: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Nie można zachować stanu UI: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Nieprawidłowa zawartość pliku stanu"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Błąd podczas odczytywania pliku \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "nie można całkowicie przywrócić stanu"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Nieprawidłowy plik stanu (powtarzające się wpisy)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Uszkodzone dane w \"%s\", nie można przywrócić torrenta."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(niezgodność informacji o hashu)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Nieprawidłowy plik stanu (błędny wpis)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Błędny plik stanu UI"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Błędna wersja pliku stanu UI"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "Nieobsługiwana wersja pliku stanu UI (jest z nowszej wersji klienta?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Nie można usunąć pliku %s zapisanego w pamięci podręcznej:"
+
+#: BitTorrent/TorrentQueue.py:530
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "To nie jest prawidłowy plik torrent. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Ten torrent (lub inny z tą samą zawartością) jest już uruchomiony."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Ten torrent (lub inny z tą samą zawartością) już oczekuje na uruchomienie."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent w nieznanym stanie %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Nie można zapisać pliku "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"torrent nie zostanie poprawnie uruchomiony ponownie przy ponownym uruchomieniu klienta"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Nie można uruchomić więcej niż %d torrentów jednocześnie. Aby dowiedzieć się więcej, zobacz FAQ na %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Nie rozpoczynaj torrenta, kiedy są inne torrenty oczekujące na rozpoczęcie, a ten już ma ustawienia do zatrzymania seedowania."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Nie rozpoczynaj torrenta, który ma już ustawienia do zatrzymania seedowania ostatnio zakończonego torrenta."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Nie można było pobrać ostatniej wersji z %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Nie można zinterpretować nowej wersji ciągu znaków z %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Nie można znaleźć odpowiedniego tymczasowego miejsca do zachowania programu instalacyjnego %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Brak dostępnego pliku torrenta dla programu instalacyjnego %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"Program instalacyjny %s %s wydaje się być niekompletny, brakujący lub uszkodzony."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+"Nie można uruchomić programu instalacyjnego na tym systemie operacyjnym"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Brak torrentów"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Uruchamianie pobierania"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normalnie uruchomiony"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Pobieranie może być wolne:\nPrawdopodobnie za zaporą sieciową/NAT-em"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Sprawdź połączenie sieciowe"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"folder, w którym zostaną zachowane zmienne, takie jak informacja fastresume i stan GUI. Standardowo podfolder 'data' w folderze konfiguracyjnym BitTorrenta."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"kodowanie znaków używane w lokalnym systemie plików. Brak wpisu oznacza automatyczne wykrywanie. Automatyczne wykrywanie nie działa pod Pythonem w wersji starszej niż 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Kod języka ISO do użycia"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP raportowane do trackera (nie daje efektu, chyba, że jesteś w tej samej lokalnej sieci co tracker)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"zewnętrzny numer portu, jeśli różni się od portu, na którym klient nasłuchuje lokalnie"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"minimalny port do nasłuchiwania, sprawdza w górę, jeśli jest niedostępny"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "maksymalny port do nasłuchiwania"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP do dołączenia lokalnie"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekundy pomiędzy aktualizowaniem wyświetlanych informacji"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minuty oczekiwania pomiędzy żądaniami o więcej peerów"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimalna liczba peerów nie wysyłających ponownych żądań"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"liczba peerów, powyżej której zatrzymane zostanie nawiązywanie nowych połączeń"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maksymalna liczba niekompletnych połączeń wychodzących"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maksymalna liczba zezwolonych połączeń, kolejne będą natychmiastowo zamykane"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "wybierz, czy sprawdzać hashe na dysku"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maksymalna prędkość wysyłania w kB/s, 0 oznacza brak limitu"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"liczba wysyłań do wypełnienia dodatkowymi optymistycznymi niezapchanymi"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"maksymalna liczba plików otwartych jednocześnie w torrencie wieloplikowym, 0 oznacza brak limitu. Używane do unikania uruchamiania poza deskryptorami plików."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Zainicjuj klienta beztrackerowego. Musi być włączone, aby pobierać torrenty beztrackerowe."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "liczba sekund wstrzymania pomiędzy wysyłaniem poleceń keepalive"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "ilość bajtów do zapytań na żądanie."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"maksymalna długość kodowania przedrostka, którą zgadzasz się przyjąć przez przewód - dłuższe wartości spowodują utratę połączenia."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"sekundy oczekiwania pomiędzy zamykaniem gniazd, na które nic nie otrzymano"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"sekundy oczekiwania pomiędzy sprawdzeniami, czy jakieś połączenie przekroczyło czas oczekiwania"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maksymalny rozmiar części do wysyłania do peerów, połączenie zostanie zerwane, jeśli otrzymasz większe żądanie"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"maksymalna przerwa pomiędzy ocenianiem aktualnej prędkości wysyłania i pobierania"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "maksymalna przerwa pomiędzy ocenianiem aktualnej prędkości seedowania"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"maksymalny czas oczekiwania pomiędzy ponawianiem ogłoszeń, jeśli wciąż są wadliwe"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"sekundy do oczekiwania na dane przychodzące przez połączenie przed założeniem, że jest prawie całkowicie zapchany"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"liczba pobierań, po których trzeba przełączyć od przypadkowego do pierwszego rzadszego"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "ile bajtów zapisywać jednorazowo do buforów sieciowych."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"odrzucaj dalsze połączenia od adresów z zepsutymi lub celowo nieprzyjaznymi peerami, które wysyłają nieprawidłowe dane"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "nie łącz się z kilkoma peerami z tym samym adresem IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"jeśli nie wynosi zero, ustaw opcję TOS do połączeń z peerami na tę wartość"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"włącz obejście błędu w libc BSD, który sprawia, że pliki są bardzo wolno odczytywane."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adres pośrednika HTTP używany do połączeń z trackerem"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "zamykaj połączenia o stanie RST i unikaj stanu TIME_WAIT TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Użyj bibliotek sieciowych Twisted do połączeń sieciowych. 1 oznacza użycie twisted, 0 oznacza, żeby nie używać twisted, -1 oznacza automatyczne wykrywanie, preferuje twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nazwa pliku (dla torrentów jednoplikowych) lub nazwa foldera (dla torrentów wieloplikowych) do zachowania torrenta, zastępując standardową nazwę w torrencie. Zobacz także --save_in, jeśli żaden nie zostanie określony, użytkownik będzie pytany o miejsce zachowywania"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "wyświetl zaawansowany interfejs użytkownika"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"maksymalny czas w minutach przez który seedować zakończony torrent przed zatrzymaniem seedowania"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"minimalny stosunek wysyłania/pobierania w procentach do osiągnięcia przed zatrzymaniem seedowania. 0 oznacza brak limitu."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"minimalny stosunek wysyłania/pobierania w procentach do osiągnięcia przed zatrzymaniem seedowania ostatniego torrenta. 0 oznacza brak limitu."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seeduj każdy zakończony torrent na czas nieokreślony (dopóki użytkownik go nie zakończy)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seeduj ostatni torrent przez czas nieokreślony (dopóki użytkownik go nie zakończy)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "uruchom pobieracza w stanie wstrzymania"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"określ, jak aplikacja powinna zachowywać się, gdy użytkownik ręcznie próbuje uruchomić innego torrenta: \"zastąp\" oznacza, żeby zawsze zastępować uruchomionego torrenta nowym, \"dodaj\" oznacza, żeby zawsze dodawać uruchomionego torrenta równolegle, oraz \"zapytaj\" oznacza, żeby pytać użytkownika za każdym razem."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Uruchom BitTorrenta zminimalizowanego"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"zastąp wersję dostarczoną przez sprawdzenie wersji http i włącz tryb sprawdzający debugowania wersji"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"zastąp bieżącą wersję używaną w sprawdzeniu wersji i włącz tryb sprwadzający debugowania wersji"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"określ rozmiar i położenie okna w formacie: SZEROKOŚĆxWYSOKOŚĆ+WYRÓWNANIEX+WYRÓWNANIEY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nazwa pliku (dla torrentów jednoplikowych) lub nazwa foldera (dla torrentów wieloplikowych) do zachowania torrenta, zastępując standaerdową nazwę w torrencie. Zobacz także --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"maksymalna liczba wysyłań zezwolonych za jednym razem. -1 oznacza (przy dużym szczęściu) rozsądną liczbę na podstawie --max_upload_rate. Wartości automatyczne są sensowne tylko w przypadku uruchamiania jednego torrenta naraz."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"lokalny folder, w którym zostanie zachowana zawartość torrenta. Plik (dla torrentów jednoplikowych) lub folder (dla torrentów wieloplikowych) zostanie utworzony w tym folderze przy użyciu standardowej nazwy określonej w pliku .torrent. Zobacz także --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "czy pytać o miejsce zachowywania pobranych plików"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"lokalny folder, w którym zostaną zachowane torrenty, przy użyciu nazw ustalonych przez --saveas_style. Jeśli to zostanie puste, każdy torrent będzie zachowywany w folderze odpowiadającym plikowi .torrent"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "jak często przeskanowywać folder torrenta, w sekundach"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"oczekuj tyle sekund po ogłoszeniu torrenta przed uruchomieniem go, aby uniknąć wyścigu z trackerem"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Jak nazywać pobrane torrenty: 1: użyj nazwy pliku torrenta (bez .torrent); 2: użyj nazwy zakodowanej w pliku torrenta; 3: utwórz folder o nazwie pliku torrent (bez .torrent) i zachowuj w tym folderze używając nazwy zakodowanej w pliku torrent; 4: jeśli nazwa pliku torrent (bez .torrent) i nazwa zakodowana w pliku torrent są identyczne, użyj tej nazwy (styl 1/2), w innym przypadku utwórz przejściowy folder, tak jak w stylu 3; UWAGA: opcje 1 i 2 dają możliwość zastąpienia plików bez ostrzeżenia i mogą sprawiać problemy z bezpieczeństwem."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"czy wyświetlać pełną ścieżkę lub zawartość torrenta dla każdego torrenta"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "folder do wyszukiwania plików .torrent (pół rekursywny)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "czy wyświetlać informacje diagnostyczne na standardowym wyjściu"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "którą moc z dwóch ustawić jako rozmiar fragmentu"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "standardowa nazwa trackera"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"jeśli nie powiedzie się, utwórz torrenta beztrackerowego, zamiast adresu ogłoszenia użyj pewnego węzła w formie <IP>:<port> lub jako pusty ciąg znaków, aby pociągnąć kilka węzłów z tablicy routingu"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "zakończono pobieranie!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<nieznany>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "zakończony za %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "pobieranie powiodło się"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB wysył. / %.1f MB pobier.)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB wysył. / %.1f MB pobier.)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d widzianych teraz, plus %d rozprowadzanych kopii (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d rozprowadzanych kopii (dalej: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d widzianych teraz"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "BŁĄD:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "zapisywanie: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "rozmiar pliku: "
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "procent zakończono: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "pozostało czasu: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "pobieranie do: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "prędkość pobierania: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "prędkość wysyłania: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "ocena udostępniania: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "stan seeda: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stan peera: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Nie można określić zarówno -save_as, jak i --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "zamykanie"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Błąd podczas odczytywania pliku konfiguracyjnego: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Błąd podczas odczytywania pliku .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "musisz określić plik .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Nie powiodła się inicjacja GUI, nie można kontynuować."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Ten interfejs pobierania wymaga standardowego modułu Pythona \"curses\", który niestety nie jest dostępny w natywnym porcie Pythona dla Windows.Jednakże jest dostępny w porcie Pythona na Cygwin uruchamialnym na każdym systemie Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Wciąż możesz używać \"bittorrent-console\" do pobierania."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "plik:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "rozmiar:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "cel:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "postęp:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "stan:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "prędkość pobier.:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "prędkość wysył.:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "udostępnianie:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "seedów:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peerów:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d widzianych teraz, plus %d rozprowadzanych kopii(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "błędy:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "błąd:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Wysyłanie Pobieranie Zakończono Prędkość"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+"pobieranie %d fragmentów, jest już %d fragmentów, zakończono %d z %d fragmentów"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Podczas wykonywania wystąpiły następujące błędy:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Użycie: %s ADRES_TRACKERA [PLIKTORRENT [PLIKTORRENT... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "stare ogłoszenie dla %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "brak torrentów"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "BŁĄD SYSTEMU - UTWORZONO WYJĄTEK"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Ostrzeżenie: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " nie jest folderem"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "błąd: %s\nuruchom bez argumentów, aby uzyskać wyjaśnienie parametrów"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nWYJĄTEK:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Wciąż możesz używać \"btdownloadheadless.py\" do pobierania."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "łączenie z peerami"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Szacowany czas zakończenia to %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Rozmiar"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Wysyłanie"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Razem:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr " (%s) %s - %s peerów %s seedów %s rozpr. kopii - %s pobr. %s wysł."
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "błąd:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nuruchom bez argumentów, aby uzyskać wyjaśnienie parametrów"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+"opcjonalny, czytelny dla człowieka komentarz do umieszczenia w .torrencie"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "opcjonalny plik docelowy dla torrenta"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - odkoduj %s plików metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Użycie: %s [PLIKTORRENT [PLIKTORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "plik metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "informacje o hashu: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nazwa pliku: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "rozmiar pliku:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "pliki:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nazwa folderu: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "rozmiar archiwum:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "adres ogłoszenia trackera: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "węzły beztrackerowe:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "komentarz:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "pon"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "wto"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "śro"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "czw"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "pią"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "sob"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "nie"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "sty"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "lut"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "kwi"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "maj"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "cze"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "lip"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "sie"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "wrz"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "paź"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "lis"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "gru"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Skompresowane: %i Nieskompresowane: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Nie można zapisać opcji na stałe: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Błąd podczas odczytywania pliku konfiguracji. Stary plik konfiguracyjny został przechowany w \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Miszmasz opcji konfiguracji: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Musisz zakończyć %s i zainstalować go ponownie. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Nie można znaleźć tłumaczenia dla języka \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Plik %s należy do innego uruchomionego torrenta"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Plik %s już istnieje, ale nie jest prawidłowym plikiem"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Krótki odczyt - jakieś skrócone pliki?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Nieobsługiwany format pliku fastresume, może pochodzi z innej wersji klienta?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Zdaje się, że inny program przeniósł, zmienił nazwę lub usunął plik, albo %s mógł zawiesić się podczas ostatniego uruchomienia."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Zdaje się, że inny program zmodyfikował plik lub %s mógł zawiesić się podczas ostatniego uruchomienia."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Zdaje się, że inny program zmienił rozmiar pliku lub %s mógł zawiesić się podczas ostatniego uruchomienia."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Nie można odczytać danych fastresume: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "połączenie zostało odrzucone"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Poprosiłeś i ponowne użycie bycia wyłączonym podczas dołączania. Przepraszam, nie mogę tego zrobić."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() powinien być wywoływany raz na reaktor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() może nie powrócić zanim będzie aktywność i może nie przetworzyć zdarzenia które chcesz. Użyj listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "błędne dane w pliku odpowiedzi - całkowicie za mały"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "błędne dane w pliku odpowiedzi - całkowicie za duży"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "sprawdzanie istniejącego pliku"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"informacje o --check_hashes 0 lub informacje o szybkim wznowieniu nie zgadzają się ze stanem pliku (brakujące dane)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Błędne informacje o fastresume (plik zawiera więcej danych)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Błędne informacje o fastresume (niedozwolona wartość)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "uszkodzone dane na dysku - może są uruchomione dwie kopie?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"przy uruchomieniu plik podaje, że został zakończony, ale nie powiodło się sprawdzenie hasha fragmentu"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Nie można ustawić przechwytywacza sygnału: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "opuszczono \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "dodano \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "oczekiwanie na sprawdzenie hasha"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "pobieranie"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Ponowne odczytywanie pliku konfiguracyjnego"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Nie można określić nazwy pliku .torrent podczas tworzenia wielu torrentów naraz"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Kodowanie systemu plików \"%s\" nie jest obsługiwane w tej wersji"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Nie można przekonwertować nazwy pliku/folderu \"%s\" do UTF-8 (%s). Któreś przyjęte kodowanie systemu plików \"%s\" jest błędne lub nazwa pliku zawiera niedozwolone bity."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Nazwa pliku/folderu \"%s\" zawiera zarezerwowane wartości unikodu, które nie odpowiadają znakom."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Nie można odczytać folderu "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Nie można zacząć"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "usuwanie %s (zostanie dodany ponownie)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**uwaga** %s jest kopią torrenta %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**uwaga** %s posiada błędy"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... powodzenie"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "usuwanie %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "zakończono sprawdzanie"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Nie można odczytać %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Nie można pobrać lub otworzyć \n%s\nSpróbuj użyć przeglądarki WWW, aby pobrać ten plik torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Wymagany jest Python %s lub nowszy"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Za późno, aby przełączyć zaplecza RawServer, %s został już użyty."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "%d sekund po rozpoczęciu ogłoszenie trackera wciąż nie jest kompletne"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Wystąpił problem podczas łączenia się z trackerem - gethostbyname nie powiodło się - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Wystąpił problem podczas łączenia się z trackerem - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "błędne dane z trackera - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "odrzucone przez trackera - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Przerwanie torrentów odrzuconych przez trackera, kiedy nie ma połączenia do żadnego peera."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Komunikat od trackera: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "ostrzeżenie od trackera - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Nie powiodło się lookup beztrackerowe: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "błędne metainfo - nie jest słownikiem"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "błędne metainfo - błędny klucz fragmentów"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "błędne metainfo - niedozwolony rozmiar fragmentu"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "błędne metainfo - błędna nazwa"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nazwa %s jest niedozwolona z przyczyn bezpieczeństwa"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "miks pliku pojedynczego/wielokrotnego"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "błędne metainfo - błędny rozmiar"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "błędne metainfo - \"files\" nie jest listą plików"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "błędne metainfo - wpis pliku musi być słownikowy"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "błędne metainfo - błędna ścieżka"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "błędne metainfo - błędna ścieżka do folderu"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "ścieżka %s jest niedozwolona z przyczyn bezpieczeństwa"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "błędne metainfo - ścieżka powtarza się"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"błędne metainfo - nazwa została użyta zarówno jako nazwa pliku, jak i podfolderu"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "błędne metainfo - błędny typ obiektu"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "błędne metainfo - brak ciągu znaków z adresem ogłoszenia"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "błędne metainfo - węzeł nie jest listą"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "błędne metainfo - lista węzłów musi posiadać tylko dwa elementy"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "błędne metainfo - komputer węzła musi być ciągiem znaków"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "błędne metainfo - port węzła musi być liczbą całkowitą"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "przyczyna niepowodzenia musi być ciągiem znaków"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "komunikat ostrzeżenia musi być ciągiem znaków"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"nieprawidłowy wpis w liście peerów - informacja o peerze musi być słownikowa"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "nieprawidłowy wpis w liście peerów - IP peera musi być ciągiem znaków"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"nieprawidłowy wpis w liście peerów - port peera musi być liczbą całkowitą"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "nieprawidłowy wpis w liście peerów - nieprawidłowy ID peera"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "nieprawidłowa lista peerów"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "nieprawidłowa przerwa ogłoszenia"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "nieprawidłowa minimalna przerwa ogłoszenia"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "nieprawidłowy ID trackera"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "nieprawidłowe obliczenie peera"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "nieprawidłowe obliczenie seeda"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "nieprawidłowy \"ostatni\" wpis"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Użycie: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPCJE] [FOLDERTORRENTÓW]\n \n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Jeśli argment nie będący opcją jest aktualny, zostanie przyjęty jako wartość\nopcji torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPCJE] [PLIKITORRENTA]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPCJE] [PLIKTORRENTA]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPCJA] ADRES_TRACKERA PLIK [PLIK]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenty to -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (domyślnie "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "nieznany klucz "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parametr podaje na końcu pustą wartość"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "interpretowanie wiersza poleceń nie powiodło się w "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Opcja %s jest wymagana."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Musisz dostaczyć przynajmniej %d argumentów."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Za dużo argumentów - maksymalnie %d."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "błędny format %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Port do nasłuchiwania."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "plik do przechowywania informacji o ostatnich pobieraniach"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "przekroczono czas oczekiwania na zamknięcie połączeń"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekundy pomiędzy zapisaniem pliku pobierania"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "sekundy pomiędzy wygaśnięciem pobierań"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+"ile sekund pobierania powinny oczekiwać pomiędzy ponownymi ogłoszeniami"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"domyślna liczba peerów do wysyłania w informacji, jeśli klient nie określa liczby"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"czas oczekiwania pomiędzy sprawdzeniami, czy jakieś połączenie nie przekroczyło czasu oczekiwania"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"jak często sprawdzać, czy pobierający jest za NAT-em (0 = nie sprawdzaj)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "czy dodawać wpisy o wynikach sprawdzania NAT-a do dziennika"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "minimalny czas jaki musiał być od ostatniego flusha do następnego"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"minimalny czas w sekundach zanim pamięć podręczna będzie uważana za nieświeża i jest flushowana"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"pozwól tylko pobieranym .torrentom w tym folderze (i rekursywnie w podfolderach folderów, w których nie ma .torrentów). Jeśli zostanie ustawione, torrenty w folderze będą wyświetlać stronę z informacjami/problemami, w zależności od tego czy mają peery, czy nie."
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"pozwól specjalnym kluczom w torrentach w allowed_dir wpływać na dostęp do trackera"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "czy ponownie otwierać dziennik po otrzymaniu sygnału HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"czy wyświetlać stronę z informacjami, kiedy folder root trackera jest wczytany"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "adres przekierowania strony z informacjami na"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "czy wyświetlać nazwy z zezwolonego folderu"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"plik zawierający dane x-icon do zwrócenia, gdy przeglądarka żąda favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignoruj parametr IP GET z maszyn, które nie są na lokalnych sieciowych IP (0 = nigdy, 1 = zawsze, 2 = ignoruj, jeśli sprawdzanie NAT jest wyłączone). Nagłówki pośrednika HTTP podające adres oryginalnego klienta są traktowane tak, jak --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"plik do zapisywania dziennika trackera, użyj - do standardowego wyjścia (domyślnie)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"użyj z allowed_dir; dodaje adres /file?hash={hash}, który zezwala użytkownikom na pobieranie pliku torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"przetrzymuj martwe torrenty po ich wygaśnięciu (więc wciąż są wyświetlane na /scrape i stronie WWW). Ma znaczenie tylko w przypadku, gdy allowed_dir nie jest ustawione"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "zezwolony problemowy dostęp (może być żaden, określony lub pełny)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maksymalna liczba peerów do dostarczania bez żadnego żądania"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"plik może istnieć gdziekolwiek we wszechświecie,\nale niestety nie tutaj\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**ostrzeżenie** określony plik favicon -- %s -- nie istnieje."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**ostrzeżenie** plik stanu %s jest uszkodzony; ponowne uruchamianie"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Uruchomiono dziennik: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**ostrzeżenie** nie można było przekierować standardowego wyjścia do pliku dziennika: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Dziennik ponownie otwarty: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**ostrzeżenie** nie można było ponownie otworzyć dziennika"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "określona funkcja problemu jest niedostępna w tym trackerze."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "pełna funkcja problemu jest niedostępna w tym trackerze."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "zdobądź funkcję niedostępną w tym trackerze."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Żądane pobranie nie jest upoważnione do użycia z tym trackerem."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "uruchom bez argumentów, aby uzyskać wyjaśnienie parametrów"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Zamykanie: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Nie można uruchomić dwóch oddzielnych przykładów tego samego torrenta"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Ukryj %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Wyświetl %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "nieprawidłowy ciąg bencoded"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "nieprawidłowa wartość bencoded (dane po prawidłowym przedrostku)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+"port maksymalny jest mniejszy niż port minimalny - brak portów do sprawdzenia"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Nie można otworzyć portu do nasłuchiwania: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Nie można otworzyć portu do nasłuchiwania: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Sprawdź ustawienia zasięgu portu."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Początkowe uruchamianie"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Nie można wczytać danych fastresume: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Przeprowadzi pełne sprawdzanie hasha."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+"nie powiodło się sprawdzenie hasha fragmentu %d, zostanie ponownie pobrany"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Próba pobrania torrenta beztrackerowego, kiedy klient beztrackerowy jest wyłączony."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "pobieranie nie powiodło się: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Błąd wejścia/wyjścia: zabrakło miejsca na dysku lub nie można utworzyć tak dużego pliku:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "zniszczony z powodu błędu wejścia/wyjścia: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "zniszczony z powodu błędu systemu operacyjnego: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "zniszczony z powodu wyjątku wewnętrznego: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Dodatkowy błąd podczas zamykania z powodu błędu: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Nie można usunąć pliku fasresume po niepowodzeniu: "
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "seedowanie"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Nie można zapisać danych fastresume: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "zamknij"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Wygląda to na starą wersję Pythona, która nie obsługuje wykrywania kodowania systemu plików. Przyjmowanie 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Pythonowi nie udało się automatycznie wykryć kodowania systemu plików. Zamiast tego użyj 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Kodowanie systemu plików '%s' nie jest obsługiwane. Zamist tego użyj 'ASCII'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Błędna ścieżka pliku składnika: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ten plik .torrent został utworzony przez zepsute narzędzie i posiada nieprawidłowo zakodowane nazwy plików. Część lub całość nazw plików może różnić się od zamierzonych przez twórcę pliku .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ten plik .torrent został utworzony przez zepsute narzędzie i posiada błędne wartości znaków, które nie odpowiadają żadnym prawdziwym znakom. Część lub całość nazw plików może różnić się od zamierzonych przez twórcę pliku .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Ten plik .torrent został utworzony przez zepsute narzędzie i posiada nieprawidłowo zakodowane nazwy plików. Użyte nazwy wciąż mogą być prawidłowe."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Zestaw znaków używany w lokalnym systemie plików (\"%s\") nie przedstawia wszystkich znaków użytych w nazwach pliku tego torrenta. Nazwy plików zostały zmienione w stosunku do oryginału."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"System plików Windows nie może obsługiwać niektórych znaków użytych w nazwach plików tego torrenta. Nazwy plików zostały zmienione z oryginału."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Ten plik .torrent został utworzony przez zepsute narzędzie i posiada co najmniej 1 plik z nieprawidłową nazwą pliku/folderu. Jednakże od kiedy wszystkie takie pliki są oznaczane i mają rozmiar 0 są po prostu ignorowane."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Nieobsługiwane polecenie: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Nie można utworzyć gniazda kontrolnego: jest już używany"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Nie można usunąć starej nazwy pliku gniazda kontrolnego:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Nie można utworzyć gniazda kontrolnego: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Nie można wysłać polecenia: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Globalny mutex jest już utworzony."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Nie można znaleźć otwartego portu!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Nie można utworzyć folderu danych aplikacji!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Nie można zdobyć globalnego muteksu zablokowania dla pliku controlsocket!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Poprzedni przykład BT nie został poprawnie wyczyszczony. Kontynuowanie."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Inny przykład BT jest uruchomiony, ale \"%s\" nie istnieje.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Zgadnę na porcie."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Znaleziono port: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Nie można znaleźć portu."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Stan IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Połączono rozmowę DDE."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "nie udało się wyrejestrować lub zamknąć gniazdo serwera: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "zgubiono gniazdo serwera"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Błąd podczas przechwytywania zaakceptowanego połączenia: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Musiano wyjść z powodu TCP flaking stack out. Zobacz FAQ na %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "otrzymano nieznany typ komunikatu"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "przekroczono czas oczekiwania"
+
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..f3c1010
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,2847 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 10:37-0000\n"
+"Last-Translator: TL <isabel@terralingua.net>\n"
+"Language-Team: Portugese <bugs@bittorrent.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instale o Python %s ou superior"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "ultrapassado, não use"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Falhou a comunicação com outro processo %s, mas parece que há um em execução."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Fechando todas as %s janelas deve corrigir o problema"
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s já em execução"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Falhou a comunicação com outro processo %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "É necessário o PyGTK %s ou mais recente"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "arraste para reordenar"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "clique no botão direito do rato para aceder ao menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "ligação telefónica analógica"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/Cabo com 128k de envio"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/Cabo com 256k de envio"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL com 768k de envio"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introduza o URL do Torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introduza o URL de um Ficheiro Torrent para abrir:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Taxa máxima de upload:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Parar temporariamente todos os torrents em execução"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Retomar o download"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova %s versão disponível"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Está disponível uma versão mais recente de %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Está a utilizar %s, e a nova versão é %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Pode obter a versão mais recente em\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Transferir_depois"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Transferir_agora"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Lembre-me depois"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Sobre %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versão %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Não foi possível abrir %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Faça a sua doação"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Registo de Actividade"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Guardar registo em:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "registo guardado"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "registo limpo"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Configurações"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Geral"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Lançar o BitTorrent ao iniciar o Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizar para um ícone na barra de tarefas"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Texto da barra de progresso é sempre a negro\n(é preciso reiniciar)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "A guardar"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Guardar os novos downloads em:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Modificar..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Perguntar onde guardar cada novo download"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "A transferir"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Ao iniciar um novo torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Parar um outro torrent para libertar espaço"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Não parar outros torrents"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "P_erguntar a cada vez"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "A semear"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Semear torrents finalizados: até a taxa atingir [_] por cento, ou durante [_] minutos, o que suceder primeiro."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Semear indefinidamente"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Semear o último torrent finalizado: até a taxa atingir [_] por cento."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rede"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Procurar uma porta disponível:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "a iniciar na porta: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Activar o mapeamento automático de portas"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP para relatar ao tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Sem efeito, a menos que esteja na\nmesma rede local que o tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ATENÇÃO: Alterar estas configurações pode\nimpedir %s de funcionar correctamente."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opção"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avançado"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Escolher a directoria padrão para os downloads"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Falhou a remoção do atalho: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Ficheiros em \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nunca"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nunca transferir"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Transferir normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primeiro"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Transferir primeiro"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nome de ficheiro"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Comprimento"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Download"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nunca"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primeiro"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Utilizadores para \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Endereço IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Cliente"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Ligação"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s de download"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s de upload"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB recebidos"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB enviados"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completo"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. de transferência do utilizador"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID do utilizador"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessado"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Engasgado"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Ignorado"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Envio optimista"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remoto"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "utilizador impróprio"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d estragado"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "banido"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informações sobre \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nome do torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sem tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL de anúncio:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", num ficheiro"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", em %d ficheiros"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Tamanho total:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Partes:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hash da informação:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Guardar em:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nome do ficheiro:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Abrir directoria"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrar lista de _ficheiros"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informações do torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Remover torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Cancelar torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", vai semear por %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", vai semear indefinidamente."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Concluído, proporção de partilha: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Concluído, %s enviados"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Concluído"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informação do torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Lista de _ficheiros"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Lista de _utilizadores"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Modificar localização"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Semear indefinidamente"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_iniciar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Terminar"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Remover"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Cancelar"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Tem a certeza que deseja remover \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "A sua proporção de partilha para este torrent é %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Enviou %s para este torrent."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Remover este torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Concluído"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "arraste para a lista para semear"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Falhou"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "arraste para a lista para continuar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Em espera"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Em pausa"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Em execução"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Upload actual: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Download actual: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Upload anterior: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Download anterior: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Proporção partilha: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s utilizadores, %s sementes. Totais do tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Cópias distribuídas: %d; Próxima: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Pedaços: %d total, %d completo, %d parcial, %d activo (%d vazio)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d pedaços estragados + %s em solicitações rejeitadas"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% concluído, %s restantes"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Taxa de download"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Taxa de upload"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "ND"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s iniciado"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Sair"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Sair"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Abrir ficheiro de torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Abrir _URL de torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Criar _novo torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/Leitura"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostrar/Ocultar torrents _concluídos"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Redimensionar _janela para encaixar"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Registo"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Configurações"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ajuda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Sobre"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Doar"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Ficheiro"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ver"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Procurar torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(parado)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(múltiplo)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Já está a transferir o instalador de %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Instalar o novo %s agora?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Deseja sair do %s e instalar a nova versão, %s, agora?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Ajuda para %s está em \n%s\nDeseja ir para lá agora?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Visitar a página web de ajuda?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Há um torrent concluído na lista. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Deseja removê-lo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Há %d torrents concluídos na lista. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Deseja removê-los todos?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Remover todos os torrents concluídos?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nenhum torrent concluído"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Não há torrents concluídos para remover."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Abrir torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Mudar local de destino para "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "O ficheiro existe!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" já existe. Deseja escolher um nome diferente de ficheiro?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Local de destino para "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "A directoria existe!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" já existe. Deseja criar uma directoria idêntica duplicando a directoria dentro da directoria já existente?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(mensagem global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Erro"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Ocorreram erros múltiplos. Clique em OK para ver o registo de erro."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Parar o torrent em execução?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Está prestes a iniciar o \"%s\". Quer também parar um outro torrent em execução?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Você fez sua doação?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bem-vindo à nova versão do %s. Você fez sua doação?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Obrigado!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Obrigado por fazer uma doação! Para doar novamente, selecione \"Doar\" no menu de \"Ajuda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Não foi possível iniciar o TorrentQueue, veja os erros acima."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s criador de ficheiro torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Criar ficheiro torrent para este ficheiro/directoria:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Escolher..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(As directorias tornar-se-ão torrents em lote)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Tamanho do pedaço:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Usar _rastreador:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Usar _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nós (opcional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Fazer"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Porta"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "A construir torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "A verificar os tamanhos de ficheiro..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Iniciar a semeadura"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "a construir"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Concluído."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Concluída a construção de torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Erro!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Erro ao construir torrents: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "É necessário o GTK %s ou mais recente"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dias"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dia e %d horas"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d horas"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutos"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d segundos"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 segundos"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ajuda"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Perguntas mais Frequentes:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ir"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Escolha uma pasta existente..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Todos os ficheiros"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Criar uma nova pasta..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Seleccione um ficheiro"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Seleccione uma pasta"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Impossível carregar estado guardado: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Impossível guardar o estado da IU: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Conteúdo do ficheiro de estado inválido"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Erro ao ler o ficheiro \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "impossível restaurar o estado completamente"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "ficheiro de estado inválido (entrada duplicada)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Dados corrompidos em \"%s\", não é possível restaurar o torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(erro no hash de informação)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ficheiro de estado inválido (entrada errada)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Ficheiro de estado da IU errado"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versão do ficheiro de estado da IU errada"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versão do ficheiro de estado da IU não suportada (de uma versão mais nova?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Não pode apagar o %s ficheiro que se encontra na cache:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Este não é um ficheiro torrent válido. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Este torrent (ou um com o mesmo conteúdo) já está em execução."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Este torrent (ou um com o mesmo conteúdo) já está em espera para ser executado."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent em estado desconhecido %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Impossível escrever ficheiro"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrent não reiniciará corretamente quando o cliente reiniciar"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Impossível executar mais que %d torrents simultaneamente. Para obter mais informações, consulte o FAQ em %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"O torrent não é iniciado porque há outros torrents à espera de serem executados, e este já cumpre as configurações sobre quando parar de semear."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"O torrent não é iniciado porque já cumpre as configurações sobre quando parar de semear o último torrent concluído."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Não foi possível obter a última versão de %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Não foi possível analisar a nova versão da string de %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Não foi possível encontrar um local temporário adequado para guardar o instalador %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Nenhum ficheiro torrent disponível para o instalador %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"O programa de instalação do %s %s parece estar incompleto, corrompido ou em falta."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Não foi possível iniciar o instalador neste Sistema Operativo"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Sem torrents"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "A iniciar a transferência..."
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "A funcionar normalmente"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "As transferências poderão ser lentas:\nProvável acção de firewall/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Verifique a ligação da rede"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"directoria sob a qual dados de variáveis tais como a informação de retoma rápida e o estado da IGU são guardados. Padrão na subdirectoria 'dados' da directoria de configuração do bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codificação de caracteres utilizada no sistema de ficheiros local. Se for deixado em branco, será detectado automaticamente. A detecção automática não funciona nas versões do python anteriores à 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Código da língua ISO a utilizar"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"endereço IP para relatar ao rastreador (só tem efeito se estiver na mesma rede local que o rastreador)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"número da porta vísivel externamente se for diferente do que o cliente na escuta local"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "porta mínima de escuta, aumentando se indisponível"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "porta máxima de escuta"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "endereço IP para ligar localmente"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "segundos entre as actualizações da informação exibida"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutos de espera entre pedidos de mais utilizadores"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "número mínimo de utilizadores para não fazer re-solicitações"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "número de utilizadores em que interromper o início de novas ligações"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "máximo de ligações de saída incompletas"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"número máximo de ligações permitidas, depois disto as novas ligações de entrada serão imediatamente fechadas"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "se deve verificar se há hashes no disco"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "máximo de kB/s para o upload, 0 significa que não há limite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "o número de uploads a preencher com desengasgos extras optimistas"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"o número máximo de ficheiros num torrent com múltiplos ficheiros a permanecerem abertos simultaneamente, 0 significa que não há limite. Usado para evitar ficar sem descritores de ficheiro."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicializar o cliente trackerless. Isto deve ser permitido para efectuar o download de torrents sem uso de trackers."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "número de segundos de pausa entre envio de keepalives"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "quantos bytes pedir por solicitação."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"comprimento máximo do prefixo de codificação aceitável na linha - valores maiores fazem a ligação cair."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "segundos a esperar entre o fecho de sockets que não receberam nada"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"segundos a esperar entre verificação se ocorreu o final do tempo limite de quaisquer ligações"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"comprimento máximo de fatia a enviar para utilizadores, fechar a ligação se for recebida uma solicitação superior"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"tempo de intervalo máximo para calcular as actuais taxas de upload e download"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"tempo de intervalo máximo para calcular as actuais taxas dos semeadores"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"tempo máximo de espera entre tentativas de anúncio se elas continuarem a falhar"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"segundos a esperar pela entrada de dados numa ligação antes de presumir que ela está semi-permanentemente engasgada"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"número de downloads aos quais mudar de aleatório para mais raro primeiro"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "quantos bytes deverm ser escritos nos buffers de rede de uma só vez."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"recusar ligações adicionais de endereços com utilizadores partidos ou intencionalmente hostis que enviam dados incorretos"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "não ligar a vários utilizadores com o mesmo endereço IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"se não for zero, ajuste a opção TOS para ligações de utilizador para este valor"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"habilitar contornos da falha na libc do BSD que torna as leituras de ficheiros muito lentas."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "endereço do proxy HTTP para utilizar em ligações de rastreador"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "fechar ligações com RST e evitar o estado TIME_WAIT do TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Usar bibliotecas de rede Twisted para ligações de rede. 1 significa usar twisted, 0 significa não usar twisted, -1 significa autedetectar e preferir twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nome do ficheiro (para torrents de único arquivo) ou nome da directoria (para torrents em lote) para guardar o torrent, sobrescrevendo o nome padrão no torrent. Veja também --guardar_em; se nenhum for especificado, o utilizador será questionado sobre o local de destino"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "exibir interface do utilizador avançada"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"o número máximo de minutos para semear um torrent completo antes de parar a semeadura"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"a razão mínima entre upload/download, em percentagem, a ser alcançada antes de parar de semear. 0 significa sem limite."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"a razão mínima entre upload/download, em percentagem, a ser alcançada antes de parar de semear o último torrent. 0 significa sem limite."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Semeia cada torrent completado indefinidamente (até o utilizador o cancelar)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Semeia o último torrent indefinidamente (até o utilizador o cancelar)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "inicar baixador em estado de pausa"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"especifica o modo como o aplicativo se deve comportar quando o utilizador tenta iniciar manualmente outro torrent: \"substituir\" significa sempre substituir o torrent em execução com o novo, \"adicionar\" significa sempre adicionar ao torrent em execução em paralelo, e \"perguntar\" significa perguntar sempre ao utilizador."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Iniciar o BitTorrent minimizado"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"ignorar a versão fornecida pela verificação de versão http e activar o modo de debugging da verificação de versão"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"ignorar a versão actualmente utilizada na verificação de versão e activar o modo de debugging da verificação de versão"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"especificar o tamanho e a posição da janela no formato: LARGURAxALTURA+DESVIOX+DESVIOY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nome do ficheiro (para torrents de ficheiro único) ou nome da directoria (para torrents em lote) para guardar o torrent, sobrescrevendo o nome padrão no torrent. Veja também --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"número máximo de uploads permitidos simultaneamente. -1 significa (acredita-se) um número razoável baseado em -- taxa_máxima_upload. Os valores automáticos só são coerentes quando estiver a executar um torrent de cada vez."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directoria local onde o conteúdo do torrent será guardado. O ficheiro (torrents de ficheiro único) ou directoria (torrents em lote) serão criados dentro dessa directoria usando o nome padrão especificado no ficheiro .torrent. Veja também --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "Se perguntar ou não por um local onde salvar os ficheiros transferidos"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"directoria local onde os torrents serão guardados, usando um nome determinado por --saveas_style. Se isto ficar em branco, cada torrent será guardado na directoria do ficheiro .torrent correspondente"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "frequência das buscas na directoria do torrent, em segundos"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"quando detectar um torrent, aguarde estes segundos para o iniciar, de modo a evitar uma corrida com o tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Como nomear downloads de torrent: 1: use o nome DO ficheiro torrent (menos o .torrent); 2: use o nome codificado NO ficheiro torrent; 3: crie uma directoria com o nome DO ficheiro torrent (menos o .torrent) e guarde naquele diretório usando o nome codificado NO ficheiro torrent; 4: se o nome DO ficheiro torrent (menos o .torrent) e o nome codificado NO ficheiro torrent são idênticos, use aquele nome (estilo 1/2), ou crie uma directoria intermediário como no estilo 3; CUIDADO: as opções 1 e 2 têm a capacidade de sobrescrever ficheiros sem advertir e podem constituir problemas de segurança."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"se deve mostrar o caminho completo do conteúdo do torrent para cada torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directoria de busca por ficheiros .torrent (semi-recursivo)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "se deve mostrar informações de diagnóstico em stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "que potência de dois deve ser configurada como tamanho do pedaço"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nome padrão do rastreador"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"se for falso gerar um torrent sem rastreador, ao invés de URL de anúncio, use um nó confiável na forma <end. ip>:<porta> ou uma string vazia para puxar alguns nós de sua tabela de encaminhamento"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "download completo!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<desconhecido>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "terminando em %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "download bem-sucedido"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d visto agora, mais %d cópias distribuídas (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d cópias distribuídas (próxima: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d visto agora"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERRO:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "a guardar:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "tamanho do ficheiro: "
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percentagem concluída: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tempo restante: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "transferir para: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "taxa de download: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "taxa de upload: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "percentagem de partilha: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "estado das sementes: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "estado do utilizador: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Impossível especificar --save_as and --save_in simultanemente"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "a desligar"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Erro ao ler a configuração: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Erro a ler o ficheiro .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "você deve especificar um ficheiro. torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Inicialização da IGU no modo texto falhou; impossível continuar."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Essa interface de download requer o módulo padrão do Python \"curses\", que infelizmente está indisponível para a versão nativa em Windows do Python. Contudo está disponível para a versão Cygwin do Python, que é executada em todos os sistemas Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Pode ainda pode usar o \"bittorrent-console\" para baixar."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "ficheiro:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "tamanho:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progresso:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "estado:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "vel downl:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "vel upl:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "compartilhamento:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sementes:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "pontos:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d visto agora, mais %d cópias distribuídas(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "erro(s):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "erro:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Upload Download Completo Velocidade"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "baixando %d pedaços, tem %d fragmentos, %d de %d pedaços completos"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Ocorreram estes erros durante a execução:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s URL_RASTREADOR [ARQUIVOTORRENT [ARQUIVOTORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "anúncio antigo para %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "sem torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERRO DE SISTEMA - EXCEÇÃO GERADA"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Atenção: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " não é um diretório"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "erro: %s\nrode sem argumentos para explicações sobre parâmetros"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEÇÃO:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Você ainda pode usar \"btdownloadheadless.py\" para baixar."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "conectando aos pontos"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tpo Estimado em %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Tamanho"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Upload"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totais:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s pontos %s semeadores %s copias - %s download %s upload"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "erro: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nrode sem argumentos para explicações sobre parâmetros"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "comentário legível opcional para pôr no .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "arquivo alvo opcional para o torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodificar %s arquivos metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s [ARQUIVOTORRENT [ARQUIVOTORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "arq metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "hash de inform: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nome arq: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "tam arq:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "ficheiros: "
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nome diretório: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "tam arquivo:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url do anúncio do rastreador: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nós sem tracker:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentário:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Seg"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Ter"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Qua"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Qui"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Sex"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sáb"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dom"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Fev"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Abr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ago"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Set"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Out"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dez"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Compactado: %i Descompactado: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Impossível salvar permanentemente as opções: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Erro ao ler ficheiro de configuração. Ficheiro antigo de configuração guardado em \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Não foi possível encontrar tradução para idioma \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "O arquivo %s pertence a outro torrent em execução"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "O arquivo %s já existe, mas não é um arquivo normal"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Leitura curta - algo truncou os arquivos?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formato de arquivo de retomada rápida não suportado, talvez de outra versão de cliente?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Impossível ler dados de retomada rápida: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "dados errados no arquivo de restposta - total pequeno demais"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "dados errados no arquivo de restposta - total grande demais"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "verificando arquivo existente"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 ou informações de retomada rápida não bate com arquivo de estado (dados faltando)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Informações de retomada rápida erradas (arquivos contêm mais dados)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Informações de retomada rápida erradas (valor ilegal)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"dados corrompidos no disco - talvez você tenha duas cópias em execução?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"dito arquivo completo na inicialização, mas o pedaço falhou na verificação de hash"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Impossível mandar manuseador de sinal: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "descartado \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "adicionado \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "agruardando por verificação de hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "baixando"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Relendo arquivo de configuração"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Você não pode especificar o nome do arquivo .torrent quando estiver gerando torrents múltiplos de uma vez"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"A codifificação de seistema de arquivos \"%s\" não é suportada por esta versão"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Impossível converter nome de arquivo/diretório \"%s\" para utf-8 (%s). Ou a codificação de sistema de arquivos assumida \"%s\" está errada ou contém bytes ilegais"
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"O nome de arquivo/diretório \"%s\" contém vlores unicode reservados que não correspondem a caracteres."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Impossível ler diretório "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Impossível ver status de "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "removendo %s (re-adicionará)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**atenção** %s é um torrent duplicado de %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**atenção** %s tem erros"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... com sucesso"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "removendo %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "verificação concluída"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Impossível ver status de %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Não é possível descarregar ou abrir \n%s\nTente utilizar um navegador web para descarregar o ficheiro torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Muito tarde para mudar o backend RawServer, %s já foram usados."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Anúncio do rastreador incompleto %d segundos após seu início"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema ao conectar ao rastreador, GetHostByName falhou - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema ao conectar ao rastreador - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dados errados do rastreador - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rejeitado pelo rastreador - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Cancelando o torrent, por ter sido rejeitado pelo rastreador enquanto não conectado a pontos."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Mensagem do rastreador: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "aviso do rastreador - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo errada - não é dicionário"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo errada - chave de pedaços errada"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo errada - comprimento ilegal de pedaço"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo errada - nome errado"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nome %s proibido por questões de segurança"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "confusão de arquivo simples/múltiplo"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo errada - comprimento errado"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo errada - \"arquivos\" não é uma lista de arquivos"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo errada - entrada de ficheiro precisa de ser um dicionário"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo errada - caminho errado"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo errada - caminho de directório errado"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "caminho %s proibido por questões de segurança"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo errada - caminho duplicado"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo errada - nome utilizado ao mesmo tempo para ficheiro e subdirectório"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo errada - tipo de objecto errado"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo errada - sem string do URL de anúncio"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo errada - node não é uma lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista de pontos inválida"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "intervalo de anúncio inválido"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "intervalo mínimo de anúncio inválido"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id do rastreador inválido"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "número de ponto inválido"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "número de semente inválido"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"Última\" entrada inválida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Uso: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPÇÕES] [DIRECTÓRIODOTORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Se um argumento que não é opção estiver presente será \ntomado como o valor da opção torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPÇÕES] [FICHEIROSTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPÇÕES] [FICHEIROTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPÇÃO] URL_RASTREADOR FICHEIRO [FICHEIRO]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "os argumentos são -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (padrão de "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "chave desconhecida "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parâmetro passado ao final sem valor"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "interpretação da linha de comando falhou em "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Opção %s é obrigatória."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Tem de fornecer pelo menos %d comandos."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Demasiados comandos - %d no máximo."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "formato errado de %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Porta de escuta."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "ficheiro para armazenar informação de descarregador recente"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tempo limite para fechar ligações"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "segundos entre salvamento de dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "segundos entre expiração de quem descarrega"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "segundos que quem baixa deve esperar entre reanúncios"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"número pré-definido de clientes para enviar uma mensagem informativa caso o cliente não especifique um número"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"tempo de espera entre verificação se qualquer das conexões exprirou o tempo"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"número de vezes a verificar de quem baixa está atrás de um NAT ( 0 = não verificar)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "se adicionar entradas ao log para verificação de NAT"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "tempo mínimo decorrido desde a última descarga para outra"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"tempo mínimo em segundos antes de um cache ser considerado estagnado e jogado fora"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"só permitir downlods de .torrents neste diretório (e recursivamente em subdiretórios de diretórios que não possuam arquivos .torrent). Se marcado, os torrents neste diretório aparecerão numa página de informações, independente de terem pontos ou não"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permite que chaves especiais em torrents em allowed_dir afetem o acesso ao rastreador"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "Se reabre o arquivo de log no recebimento de um sinal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"se mostra uma página de informação quando o diretório raiz do rastreador é carregado"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "uma URL para redirecionar a página de informação"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "se mostra nomes do diretório permitido"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"Arquivo contendo dados x-icon a serem retornados quando o browser solicitar favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorar o parâmetro IP GET de máquinas que não estão nos IPs da rede local (0 = nunca, 1 = sempre, 2 = ignorar se verificação de NAT desabilitada). Cabeçalhos de proxy HTTP dando endereço do cliente original serão tratados da mesma forma que --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"arquivo para escrever os logs de rastreador, use - para stdout (padrão)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"use com allowed_dir; adiciona uma URL /arquivo?hash={hash} que permite aos usuários baixar o arquivo torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"manter torrents mortos depois de expirar (para que eles ainda apareçam em seu /scrape e página da web). Só importa se allowed_dir não está marcado"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "acesso a scrape permitido (pode ser nenhum, específico ou total)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "número máximo de pontos para dar com qualquer solicitação"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"seu arquivo pode existir em qualquer lugar no universo,\nmas não aqui\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**atenção** arquivo especificado como favicon -- %s -- não existe."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**atenção** arquivo de estado %s corrompido; reiniciando"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Log Iniciado: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**atenção** impossível redirecionar stdout para o arquivo de log: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log reaberto: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**atenção** impossível reabrir o arquivo de log"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "função específica de scrape indisponível com este rastreador."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "função scrape total indisponível com este rastreador."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "função de conseguir indisponível com este rastreador."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Download solicitado não está autorizado para uso com este rastreador."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "rode sem argumentos para explicações sobre parâmetros"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Desligando: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Impossível iniciar duas instâncias distintas do mesmo torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "não é uma string codificada válida"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "valor codificado inválido (dados após prefixo válido)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "porta máxima menor que porta mínima - sem portas para verificar"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Impossível abrir uma porta de escuta: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Impossível abrir uma porta de escuta: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Verifique suas configurações de faixa de portas."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Inicialização"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Não foi possível obter dados do reínicio rápido: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Fará verificação de hash completa."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "falhou a verificação de hash do pedaço %d, baixando-o novamente"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Tente baixar um torrent sem rastreador com um cliente sem rastreador desligado."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "download falhou: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Erro de E/S: Espaço insuficiente no disco, ou impossível criar arquivo tão grande:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "morto por erro de E/S: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "morto por erro no SO: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "morto por exceção interna: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Erro adicional quando fechendo devido a erro: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Impossível remover arquivo de retomada rápida após a falha:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "semeando"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Impossível escrever dados de retomada rápida: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "desligar"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Parece haver uma versão antiga do Python que não suporta detecção da codificação de sistema de arquivos. Assumindo 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python falhou ao ao autodetectar a codificação de sistema de arquivos. Uando então 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Codificação de sistema de arquivos '%s' não é suportada. Usando então 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componente do caminho de arquivo errado: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui nomes de arquivos codificados incorretamente. Alguns ou todos os nomes de arquivos podem aparecer diferentes daquilo que o criador do arquivo .torrent quis."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui valores errados de caracteres que não correspondem a nenhum caracter real. Alguns ou todos os nomes de arquivos podem aparecer diferentes daquilo que o criador do arquivo .torrent quis."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui nomes de arquivos codificados incorretamente. Os nomes usados podem ainda estar corretos."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"O conjunto de caracteres usado no sistema de arquivos local (\"%s\") pode não representar todos os caracteres usados no(s) nome(s) de arquivo(s) deste torrent. Os nomes de arquivos foram modificados do original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui pelo menos 1 nome de arquivo ou de diretório inválido. Contudo, como todos os arquivos nessa situação foram marcados como tendo comprimento 0, serão ignorados."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Impossível criar socket de controle: já em uso"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Impossível remover nome de arquivo do socket de controle antigo:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Impossível criar socket de controle: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Impossível enviar comando: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "O mutex global já foi criado."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Não foi possível encontrar uma porta livre!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Não foi possível criar o directório de dados da aplicação."
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Não foi possível efectivar o bloqueamento do mutex global para o controlsocket do ficheiro!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "Uma execução anterior do BT não foi adequadamente limpa. A continuar."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket do servidor perdido"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Error lidando com conexão aceita: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Foi preciso sair devido ao desmoronamento da pilha TCP. Favor ver o FAQ em %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "recebido tipo de mensagem desconhecido"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..019de6a
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,2854 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 11:03-0000\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: Portugese <bugs@bittorrent.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instale o Python %s ou superior"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "deprecado, não use"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Falha ao se comunicar com outro processo %s mas parece que um deles está funcionando."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Fechando todas as %s janelas poderá resolver o problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s já em execução"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Falha ao se comunicar com outro processo %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "É necessário o PyGTK %s ou mais recente"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "arraste para reordenar"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "botão direito para abrir menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "discada"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cabo com 128k de envio"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cabo com 256k de envio"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL com 768k de envio"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Digite a URL do torrent"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Digite a URL para abrir um arquivo torrent:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Taxa máxima de upload:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Pare todos os torrents em execução temporariamente"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Retomar download"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nova versão %s disponível"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Uma nova versão de %s está disponível.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Você está usando %s, e a nova versão é %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Você sempre pode obter a última versão em \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Baixar _depois"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Baixar _agora"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Lembre-me depois"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Sobre %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versão %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Impossível abrir %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Faça sua doação"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Log de Atividade"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Salvar log em:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "log salvo"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "log apagado"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Configurações %s "
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Geral"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Carregar BitTorrent quando o Windows iniciar"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimizar para barra de tarefas"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Texto da barra de progresso sempre em preto\n(necessita reiniciar)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Salvando"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Salvar downloads novos em:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Modificar..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Perguntar onde salvar cada novo download"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Baixando"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Quando iniciar um novo torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Parar outro torrent ativo para criar espaço"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Não parar outros torrents ativos"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Perguntar sempre"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Semeando"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Semear torrents completados: até que a proporção de compartilhamento chegue a [_] por cento, ou por [_] minutos, o que vier primeiro."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Semear indefinidamente"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Semear o último torrent completado: até que a proporção de compartilhamento alcance [_] por cento."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rede"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Procurar porta disponível:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "iniciando na porta: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Ativar mapeamento automático de portas"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP para informar ao rastreador:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Sem efeito, a menos que esteja na\nmesma rede local que o rastreador)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ATENÇÃO: Alterar estas configurações pode\nimpedir que %s funcione corretamente."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opção"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valor"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avançado"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Escolha a pasta padrão para download"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Falha ao remover o atalho: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Arquivos em \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nunca"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nunca baixar"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Efetuar download normalmente"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primeiro"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Efetuar download primeiro"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nome de arquivo"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Tamanho"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Download"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nunca"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primeiro"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Pontos para \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Endereço de IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Cliente"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Conexão"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s recebimento"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s envio"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB baixados"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB enviados"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% completo"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. download do ponto"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID do ponto"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interessado"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Engasgado"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Ignorado"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Upload otimista"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remoto"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "ponto inválido"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d inválido"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "banido"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informações sobre \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nome do Torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent sem rastreador)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL de anúncio:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", em um arquivo"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", em %d arquivos"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Tamanho total:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Pedaços:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hash de informação:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Salvar em:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nome do arquivo:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Abrir diretório"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Mostrar _lista de arquivos"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informações do torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Remover torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Cancelar torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", vai semear por %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", vai semear indefinidamente."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Concluído, proporção de compartilhamento: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Concluído, %s enviado"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Concluído"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informação do torrent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Lista de _arquivos"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Lista de pontos"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Mudar localização"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Semear indefinidamente"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Rei_niciar"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Terminar"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Remover"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Cancelar"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Tem certeza de que quer remover \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Sua proporção de compartilhamento para este torrent é %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Você enviou %s para este torrent. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Remover este torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Concluído"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "arraste para a lista para semear"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Falhou"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "arraste para a lista para continuar"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Aguardando"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pausado"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Ativo"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Envio atual: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Recebimento atual: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Envio anterior: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Recebimento anterior: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Prop. compart: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s pontos, %s sementes. Totais do rastreador: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Cópias distribuídas: %d; Próxima: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Pedaços: %d total, %d completo, %d parcial, %d ativo (%d vazio)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d pedaços inválidos + %s em solicitações descartadas"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% concluído, %s restando"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Taxa de download"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Taxa de upload"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s iniciado"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Sair"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Sair"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Abrir arquivo torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Abrir _URL do torrent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Fazer _novo torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausar/Iniciar"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Mostrar/Esconder torrents _concluídos"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Redimensionar _janela para caber"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "Config_urações"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "Aj_uda"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Sobre"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Faça sua doação"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Arquivo"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Ver"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Procurar torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(parado)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(múltiplo)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Já baixando o instalador %s"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Instalar novo %s agora?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Você deseja sair do %s e instalar a nova versão, %s, agora?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Ajuda para %s está em \n%s\nDeseja ir até lá agora?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Visitar a página de ajuda?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Há um torrent concluído na lista. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Você quer removê-lo?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Há %d torrents concluídos na lista. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Você quer remover todos?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Remover todos os torrents concluídos?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nenhum torrent concluído"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Não há torrents concluídos para remover."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Abrir torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Mudar local de salvar para "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "O arquivo já existe!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" já existe. Você quer escolher outro nome de arquivo?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Local de salvar para "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "A pasta já existe!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" já existe. Você quer criar uma pasta de mesmo nome dentro da pasta existente?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(mensagem global) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Erro"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Ocorreram vários erros. Clique em OK para ver o log de erros."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Parar o torrent ativo?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Você está prestes a iniciar o \"%s\". Também deseja parar outro torrent ativo?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Você fez sua doação?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bem-vindo à nova versão do %s. Você fez sua doação?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Obrigado!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Obrigado por fazer uma doação! Para doar novamente, selecione \"Faça sua doação\" no menu \"Ajuda\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Não foi possível iniciar a fila do torrent, veja os erros acima."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s criador de arquivo torrent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Criar torrent para este arquivo/pasta:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Escolher..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(As pastas se tornarão torrents em lote)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Tamanho do pedaço:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Usar _rastreador"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Usar _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nós (opcional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Comentários:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Criar"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Porta"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Construindo torrents..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Verificando tamanhos de arquivo..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Iniciar semeadura"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "construindo "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Concluído."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Concluída construção de torrents."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Erro!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Erro ao construir torrents: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "É necessário o GTK %s ou mais recente"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dias"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dia e %d horas"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d horas"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minutos"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d segundos"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 segundos"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ajuda"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Perguntas mais Freqüentes:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Ir"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Escolha uma pasta existente"
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Todos os arquivos"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Criar uma nova pasta..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Selecione um arquivo"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Selecione uma pasta"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Impossível carregar estado salvo: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Impossível salvar estado da IU: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Conteúdo de arquivo de estado inválido"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Erro ao ler o arquivo \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "impossível restaurar estado completamente"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Arquivo de estado inválido (entrada duplicada)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Dados corrompidos em \"%s\", não é possível restaurar torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(má combinação do infohash)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Arquivo de estado inválido (entrada inválida)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Arquivo de estado da IU inválido"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versão do arquivo de estado da IU inválida"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versão do arquivo de estado da IU não suportada (de uma versão de cliente mais nova?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Não foi possível eliminar o arquivo %s em cache:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Este não é um arquivo torrent válido. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Este torrent (ou um com o mesmo conteúdo) já está em execução."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Este torrent (ou um com o mesmo conteúdo) já está aguardando para execução."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent em estado desconhecido %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Impossível gravar arquivo "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "o torrent não reiniciará corretamente quando o cliente reiniciar"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Impossível executar mais que %d torrents simultaneamente. Para maiores informações, veja as perguntas mais freqüentes (FAQs) em %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Não iniciando o torrent, pois há outros torrents aguardando para execução, e este já atende às configurações de quando parar de semear."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Não iniciando o torrent, pois este já atende às configurações de quando parar de semear o último torrent concluído."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Não foi possível obter a última versão de %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Não foi possível analisar a string da nova versão de %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Não foi possível encontrar um local temporário apropriado para salvar o instalador de %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Nenhum arquivo torrent disponível para o instalador de %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "instalador de %s %s parece estar incompleto, ausente ou corrompido."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Não foi possível iniciar o instalador neste sistema operacional"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nenhum torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Iniciando download"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Rodando normalmente"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Os downloads podem estar lentos: \n Provavelmente existe um firewall ativo/ NATted"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Verifique conexão de rede"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"pasta sob a qual dados de variáveis tais como informação de retomada rápida e estado da IGU são salvos. Padrões na subpasta 'data' da pasta de configuração do bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codificação de caracteres usada no sistema de arquivos local. Autodetectado, se deixado vazio. Detecção automática não funciona em versões do python anteriores a 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Use o código da linguagem ISO"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"endereço IP para informar ao rastreador (não tem efeito, a menos que você esteja na mesma rede local que o rastreador)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"número da porta vísivel externamente se for diferente do cliente de escuta local"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "porta mínima de escuta, aumentando se indisponível"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "porta máxima de escuta"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "endereço IP para ligar localmente"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "segundos entre atualizações de informação mostrada"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minutos de espera entre pedidos de mais pontos"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "número mínimo de pontos para não fazer re-solicitações"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "número de pontos onde parar de iniciar novas conexões"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "número máximo de conexões de saída incompletas"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"número máximo de conexões permitidas, acima disso novas conexões recebidas serão imediatamente fechadas"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "se deve verificar hashes no disco"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "máximo de kB/s para envio, 0 significa sem limite"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "o número de envios a preencher com desengasgos extra otimistas"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"o número máximo de arquivos em um torrent multi-arquivos a permanecerem abertos simultaneamente, 0 significa sem limite. Usado para evitar ficar sem descritores de arquivo."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicie um cliente sem rastreador. Isto deve ser habilitado para baixar torrents sem rastreador."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "número de segundos de pausa entre envios de keepalives"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "quantos bytes pedir por solicitação."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"máximo comprimento do prefixo de codificação aceitável na linha - valores maiores fazem a conexão cair."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "segundos a esperar entre fechamentos de sockets que não receberam nada"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "segundos a esperar entre verificações se alguma conexão expirou"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"comprimento máximo de fatia a enviar para pontos, fechar conexão se recebida solicitação maior"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"máximo intervalo de tempo para estimar as taxas de envio e recebimento atuais"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "máximo do intervalo de tempo para estimar a taxa de semeadura atual."
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"tempo máximo de espera entre tentativas de anúncio se continuarem falhando"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"segundos a esperar por dados de entrada em uma conexão antes de assumir que ela está semi-permanentemente engasgada"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"número de recebimentos para mudar, de aleatório para mais raro primeiro"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "quantos bytes devem ser gravados nos buffers de rede por vez."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"recusar conexões adicionais de endereços com pontos falhos ou intencionalmente hostis que enviam dados incorretos"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "não conectar a vários pontos que têm o mesmo endereço IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"se diferente de zero, ajuste a opção TOS para conexões de ponto para este valor"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"habilitar contornar falha na libc do BSD, que faz leituras de arquivos ficarem muito lentas."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "endereço do proxy HTTP para usar em conexões de rastreador"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "fechar conexões com RST e evitar o estado TIME_WAIT do TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Usar bibliotecas de rede Twisted para conexões de rede. 1 significa usar twisted, 0 significa não usar twisted, -1 significa autedetectar e preferir twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nome do arquivo (para torrents de único arquivo) ou nome da pasta (para torrents em lote) para salvar o torrent, sobrescrevendo o nome padrão no torrent. Veja também --save_in; se nenhum for especificado, o usuário será perguntado sobre o local para salvar"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "mostrar interface de usuário avançada"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"o número máximo de minutos para semear um torrent completo antes de parar a semeadura"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"a mínima proporção entre envio/recebimento, em percentual, a ser alcançada antes de parar de semear. 0 significa sem limite."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"a mínima proporção entre envio/recebimento, em percentual, a ser alcançada antes de parar de semear o último torrent. 0 significa sem limite."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Semeia cada torrent completado indefinidamente (até o usuário cancelá-lo)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Semeia o último torrent indefinidamente (até o usuário cancelá-lo)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "iniciar baixador em estado de pausa"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"especifica como o aplicativo deve se comportar quando o usuário tenta manualmente iniciar outro torrent: \"substituir\" significa sempre substituir o torrent em execução pelo novo, \"adicionar\" significa sempre adicionar ao torrent em execução em paralelo, e \"perguntar\" significa perguntar ao usuário a cada vez."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Iniciar BitTorrent minimizado"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"cancele a versão fornecida pela verificação da versão do http e ative o modo de depuração da verificação da versão"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"cancele a versão atual usada na verificação da versão e ative o modo de depuração da verificação da versão"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"especifique tamanho e posição da janela, no formato:Largura X Altura + DeslocamentoX + DeslocamentoY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nome do arquivo (para torrents de único arquivo) ou nome da pasta (para torrents em lote) para salvar o torrent, sobrescrevendo o nome padrão no torrent. Veja também --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"número máximo de envios permitidos simultaneamente. -1 significa (acredita-se) um número razoável baseado em -- taxa_maxima_envio. Os valores automáticos só são coerentes quando se estiver rodando um torrent por vez."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"diretório local onde o conteúdo do torrent será salvo. O arquivo (torrents de único arquivo) ou pasta(torrents em lote) serão criados dentro dessa pasta usando o nome padrão especificado no arquivo .torrent. Veja também --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "se deve perguntar ou não por um local onde salvar os arquivos baixados"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"diretório local onde os torrents serão salvos, usando um nome determinado por --saveas_style. Se deixado em branco, cada torrent será salvo na pasta do arquivo .torrent correspondente"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "freqüência de busca na pasta do torrent, em segundos"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"aguarde este número de segundos após observar um torrent antes de iniciá-lo, para evitar conflitos com o tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Como nomear recebimentos de torrent: 1: use o nome DO arquivo torrent (menos o .torrent); 2: use o nome codificado NO arquivo torrent; 3: crie uma pasta com o nome DO arquivo torrent (menos o .torrent) e salve naquela pasta usando o nome codificado NO arquivo torrent; 4: se o nome DO arquivo torrent (menos o .torrent) e o nome codificado NO arquivo torrent são idênticos, use aquele nome (estilo 1/2), ou crie uma pasta intermediária como no estilo 3; CUIDADO: as opções 1 e 2 têm a capacidade de sobrescrever arquivos sem advertir e podem apresentar problemas de segurança."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "se deve mostrar o caminho completo ou o conteúdo para cada torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "pasta de busca por arquivos .torrent (semi-recursivo)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "se deve mostrar informações de diagnóstico em stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "que potência de dois deve ser escolhida como tamanho do pedaço"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nome padrão do rastreador"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"se falso gerar um torrent sem rastreador, ao invés de URL de anúncio, use um nó confiável na forma <ip>:<porta> ou uma string vazia para puxar alguns nós de sua tabela de roteamento"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "download completo!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<desconhecido>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "terminando em %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "download bem-sucedido"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB up / %.1f MB down)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d visto agora, mais %d cópias distribuídas (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d cópias distribuídas (próxima: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d visto agora"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ERRO:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "salvando: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "tamanho do arquivo: "
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percentual concluído: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tempo restante: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "baixar para: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "taxa de download: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "taxa de upload: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "percentual de compartilhamento: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "status de sementes: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "status do ponto: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Impossível especificar --save_as and --save_in simultanemente"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "desligando"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Erro ao ler configuração: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Erro lendo arquivo .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "você deve especificar um arquivo .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Inicialização da IGU no modo texto falhou; impossível prosseguir."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Essa interface de download requer o módulo padrão do Python \"curses\", que infelizmente está indisponível para a versão nativa em Windows do Python. Contudo está disponível para a versão Cygwin do Python, que roda em todos os sistemas Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Você ainda pode usar o \"bittorrent-console\" para baixar."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "arquivo:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "tamanho:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progresso:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "veloc dl:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "veloc ul:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "compartilhamento:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sementes:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "pontos:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d visto agora, mais %d cópias distribuídas(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "erro(s):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "erro:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Upload Download Completo Velocidade"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "baixando %d pedaços, tem %d fragmentos, %d de %d pedaços completos"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Ocorreram estes erros durante a execução:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s URL_RASTREADOR [ARQUIVOTORRENT [ARQUIVOTORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "anúncio antigo para %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "sem torrents"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "ERRO DE SISTEMA - EXCEÇÃO GERADA"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Atenção: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " não é um diretório"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "erro: %s\nrode sem argumentos para explicações sobre parâmetros"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEÇÃO:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Você ainda pode usar \"btdownloadheadless.py\" para baixar."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "conectando aos pontos"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Tpo Estimado em %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Tamanho"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Upload"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totais:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s pontos %s semeadores %s copias - %s download %s upload"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "erro: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nrode sem argumentos para explicações sobre parâmetros"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "comentário legível opcional para pôr no .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "arquivo alvo opcional para o torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodificar %s arquivos metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uso: %s [ARQUIVOTORRENT [ARQUIVOTORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "arq metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "hash de inform: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nome arq: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "tam arq:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "arquivos:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nome diretório: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "tam arquivo:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url de anúncio do rastreador: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "nós sem rastreador:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentário:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Seg"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Ter"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Qua"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Qui"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Sex"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sáb"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dom"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Fev"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Abr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ago"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Set"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Out"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dez"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Compactado: %i Descompactado: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Impossível salvar permanentemente as opções: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Erro lendo arquivo de configuração. Arquivo antigo de configuração armazenado em \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Conflito de opção de configuração: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Você terá de encerrar %s e reinstalar isto. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Não foi possível achar tradução para a lingua \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "O arquivo %s pertence a outro torrent em execução"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "O arquivo %s já existe, mas não é um arquivo normal"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Leitura curta - algo truncou os arquivos?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formato de arquivo de retomada rápida não suportado, talvez de outra versão de cliente?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Outro programa parece ter movido, renomeado, ou deletado o arquivo, ou %s deve ter travado na ultima vez que rodou."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Outro programa parece ter movido, renomeado, ou deletado o arquivo, ou %s deve ter travado na ultima vez que rodou."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Outro programa parece ter movido, renomeado, ou deletado o arquivo, ou %s deve ter travado na ultima vez que rodou."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Impossível ler dados de retomada rápida: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "conexão recusada"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Voçê perguntou por reuso ser desligado quando fizer binding.Desculpe, Não posso fazer isso."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() deve ser chgamado somente uma por reação."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() deve não retornar até que tenha atividade, e não deve processar o evento que voçê quer. Use listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "dados errados no arquivo de resposta - total pequeno demais"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "dados errados no arquivo de resposta - total grande demais"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "verificando arquivo existente"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 ou informações de retomada rápida não bate com arquivo de estado (dados faltando)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Informações de retomada rápida erradas (arquivos contêm mais dados)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Informações de retomada rápida erradas (valor ilegal)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+"dados corrompidos no disco - talvez você tenha duas cópias em execução?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"dito arquivo completo na inicialização, mas o pedaço falhou na verificação de hash"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Impossível mandar manuseador de sinal: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "descartado \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "adicionado \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "aguardando por verificação de hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "baixando"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Relendo arquivo de configuração"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Você não pode especificar o nome do arquivo .torrent quando estiver gerando torrents múltiplos de uma vez"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"A codificação de sistema de arquivos \"%s\" não é suportada por esta versão"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Impossível converter nome de arquivo/diretório \"%s\" para utf-8 (%s). Ou a codificação de sistema de arquivos assumida \"%s\" está errada ou contém bytes ilegais"
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"O nome de arquivo/diretório \"%s\" contém valores unicode reservados que não correspondem a caracteres."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Impossível ler diretório "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Impossível ver status de "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "removendo %s (re-adicionará)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**atenção** %s é um torrent duplicado de %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**atenção** %s tem erros"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... com sucesso"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "removendo %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "verificação concluída"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Impossível ver status de %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Não foi possível baixar ou abrir \n%s\nTente baixar o torrent através de um Navegador da Web."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s ou mais novo requerido"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Muito tarde para mudar o backend RawServer, %s já foram usados."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Anúncio do rastreador incompleto %d segundos após seu início"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema ao conectar ao rastreador, GetHostByName falhou - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problema ao conectar ao rastreador - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dados errados do rastreador - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "rejeitado pelo rastreador - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Cancelando o torrent, por ter sido rejeitado pelo rastreador enquanto não conectado a pontos. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Mensagem do rastreador: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "aviso do rastreador - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "O observador do sem rastreador falhou:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo errada - não é dicionário"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo errada - chave de pedaços errada"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo errada - comprimento ilegal de pedaço"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo errada - nome errado"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "nome %s proibido por questões de segurança"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "conjunto de arquivo simples/múltiplo"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo errada - comprimento errado"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo errada - \"arquivos\" não é uma lista de arquivos"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo errada - a entrada do arquivo deve ser direcionada"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo errada - caminho errado"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo errada - caminho de diretório errado"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "caminho %s proibido por questões de segurança"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo errada - caminho duplicado"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo errada - nome usado ao mesmo tempo para arquivo e subdiretório"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo errada - tipo de objeto errado"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo errada - sem string da URL de anúncio"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo errada - o nó não é uma lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "metainfo errada - a lista do nó deve ter somente dois elementos "
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "metainfo errada - o host do nó deve ser só letras"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "metainfo errada - o nó da porta deve ser só números inteiros"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "a razão da falha deve ser as letras"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "a mensagem de advertência deve ser em letras"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"entrada inválida na lista de pontos- a informação dos pontos deve ser direcionada"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"entrada inválida na lista de pontos - o IP do pontos deve ser uma letra"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"entrada inválida na lista de pontos - a porta do ponto deve ser um inteiro"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "entrada inválida na lista de ponto - identificação inválida do ponto"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista de pontos inválida"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "intervalo de anúncio inválido"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "intervalo mínimo de anúncio inválido"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id do rastreador inválido"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "número de ponto inválido"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "número de semente inválido"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"última\" entrada inválida"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Uso: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPÇÕES] [DIRETÓRIODOTORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Se um argumento que não é opção estiver presente será \ntomado como o valor da opção torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPÇÕES] [ARQUIVOSTORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPÇÕES] [ARQUIVOTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPÇÃO] URL_RASTREADOR ARQUIVO [ARQUIVO]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "os argumentos são -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (padrão de "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "chave desconhecida "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parâmetro passado ao final sem valor"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "interpretação da linha de comando falhou em "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Opção %s é obrigatória."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Deve fornecer pelo menos %d argumentos."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Argumentos em excesso - máximo de %d"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "formato errado de %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Porta de escuta."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "arquivo para armazenar inrformação de baixador recente"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "tempo limite para fechar conexões"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "segundos entre a gravação do arquivo"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "segundos entre expiração de quem baixa"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "segundos que quem baixa deve esperar entre reanúncios"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"número padrão de pontos para enviar mensagens de informação se o cliente não especificar um número"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"tempo de espera entre verificação se qualquer das conexões exprirou o tempo"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"número de vezes a verificar de quem baixa está atrás de um NAT ( 0 = não verificar)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "se adicionar entradas ao log para verificação de NAT"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "tempo mínimo decorrido desde a última descarga para outra"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"tempo mínimo em segundos antes de um cache ser considerado estagnado e jogado fora"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"só permitir downlods de .torrents neste diretório (e recursivamente em subdiretórios de diretórios que não possuam arquivos .torrent). Se marcado, os torrents neste diretório aparecerão numa página de informações, independente de terem pontos ou não"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permite que chaves especiais em torrents em allowed_dir afetem o acesso ao rastreador"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "se reabre o arquivo de log no recebimento de um sinal HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"se mostra uma página de informação quando o diretório raiz do rastreador é carregado"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "uma URL para redirecionar a página de informação"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "se mostra nomes do diretório permitido"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"arquivo contendo dados x-icon a serem retornados quando o browser solicitar favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorar o parâmetro IP GET de máquinas que não estão nos IPs da rede local (0 = nunca, 1 = sempre, 2 = ignorar se verificação de NAT desabilitada). Cabeçalhos de proxy HTTP dando endereço do cliente original serão tratados da mesma forma que --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"arquivo para escrever os logs de rastreador, use - para stdout (padrão)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"use com allowed_dir; adiciona uma URL /arquivo?hash={hash} que permite aos usuários baixar o arquivo torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"manter torrents mortos depois de expirar (para que eles ainda apareçam em seu /scrape e página da web). Só importa se allowed_dir não está marcado"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "acesso a scrape permitido (pode ser nenhum, específico ou total)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "número máximo de pontos para dar com qualquer solicitação"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"seu arquivo pode existir em qualquer lugar no universo,\nmas não aqui\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**atenção** arquivo especificado como favicon -- %s -- não existe."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**atenção** arquivo de estado %s corrompido; reiniciando"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Log Iniciado: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**atenção** impossível redirecionar stdout para o arquivo de log: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Log reaberto: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**atenção** impossível reabrir o arquivo de log"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "função específica de scrape indisponível com este rastreador."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "função scrape total indisponível com este rastreador."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "função obter indisponível com este rastreador."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Download solicitado não está autorizado para uso com este rastreador."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "rode sem argumentos para explicações sobre parâmetros"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Desligando: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Impossível iniciar duas instâncias distintas do mesmo torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Esconder %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Mostrar %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "não é uma string codificada válida"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "valor codificado inválido (dados após prefixo válido)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "porta máxima menor que porta mínima - sem portas para verificar"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Impossível abrir uma porta de escuta: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Impossível abrir uma porta de escuta: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Verifique suas configurações de faixa de portas."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Inicialização"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Não foi possível obter dados do reínicio rápido: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Fará verificação de hash completa."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "falhou a verificação de hash do pedaço %d, baixando-o novamente"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Tente baixar um torrent sem rastreador com um cliente sem rastreador desligado."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "download falhou: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Erro de E/S: Espaço insuficiente no disco, ou impossível criar arquivo tão grande:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "morto por erro de E/S: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "morto por erro no SO: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "morto por exceção interna: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Erro adicional durante encerramento devido a erro: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Impossível remover arquivo de reínicio rápida após a falha:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "semeando"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Impossível escrever dados de retomada rápida: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "desligar"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Parece haver uma versão antiga do Python que não suporta detecção da codificação de sistema de arquivos. Assumindo 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python falhou ao ao autodetectar a codificação de sistema de arquivos. Usando então 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Codificação de sistema de arquivos '%s' não é suportada. Usando então 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componente do caminho de arquivo errado: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui nomes de arquivos codificados incorretamente. Alguns ou todos os nomes de arquivos podem aparecer diferentes daquilo que o criador do arquivo .torrent quis."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui valores errados de caracteres que não correspondem a nenhum caracter real. Alguns ou todos os nomes de arquivos podem aparecer diferentes daquilo que o criador do arquivo .torrent quis."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui nomes de arquivos codificados incorretamente. Os nomes usados podem ainda estar corretos."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"O conjunto de caracteres usado no sistema de arquivos local (\"%s\") pode não representar todos os caracteres usados no(s) nome(s) de arquivo(s) deste torrent. Os nomes de arquivos foram modificados do original."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"O sistema de arquivos do Windows não pode utilizar alguns dos caracteres usados no nome de arquivo(s) deste torrent. Nome de arquivos serão modificados do original."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Esse arquivo .torrent foi criado com uma ferramenta defeituosa e possui pelo menos 1 nome de arquivo ou de diretório inválido. Contudo, como todos os arquivos nessa situação foram marcados como tendo comprimento 0, serão ignorados."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Comando não executado: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Impossível criar socket de controle: já em uso"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Impossível remover nome de arquivo do socket de controle antigo:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Impossível criar socket de controle: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Impossível enviar comando: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex global já criado."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Não foi possível achar um port aberto!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Não foi possível criar um diretório de dados da aplicação!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"Não foi possível obter trava no mutex global par o arquivo de controle de socket!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "Outra instância do BT não foi fechada propriamente. Continuando."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Outra instância do BT está rodando, mas \"%s\" não existe.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Eu suponho na porta."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Porta achada: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Não poderia encontrar a porta."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC Status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Conversação DDE conectada."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "falha ao descadastrar ou fechar socket do servidor: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "socket do servidor perdido"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Erro lidando com conexão aceita: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Foi preciso sair devido ao desmoronamento da pilha TCP. Favor ver o FAQ em %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "tipo de mensagem desconhecida recebida"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "tempo expirado"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..2777f63
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,2864 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-30 11:56+0200\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: Lupoiu Victor Alexandru ( lupoiu [dot] victor [at] gmail[dot]com )\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Country: ROMANIA\n"
+"X-Poedit-Language: Romanian\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Instalaţi Python %s sau mai recent"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "dezaprobat, a nu se folosi"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Eşuare la comunicarea cu un alt proces %s dar se pare că unul rulează deja."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Închiderea tuturor ferestrelor %s ar putea rezolva problema."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s rulează deja"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Eşuare la comunicarea cu un alt proces %s."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s sau mai recent este necesar"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "glisare pentru reordonare"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "clic-dreapta pentru meniu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "apelare pe linie"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cablu 128k sau viteză mai mare"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cablu 256k sau viteză mai mare"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k sau viteză mai mare"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Introduceţi adresa URL a torentului"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Introduceţi adresa URL a fişierului torrent pentru a-l deschide:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Rată maximă de încărcare:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Oprire temporară a tuturor torentelor care rulează"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Reluare descărcare"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nouă versiune %s disponibilă"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Este disponibilă o versiune mai nouă a %s .\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Utilizaţi %s, cea mai nouă versiune este %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Puteţi descărca întotdeauna cea mai recentă versiune de la \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Descărcare mai _tarziu"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Descărcare _acum"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Aminteşte-mi mai târziu"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Despre %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Versiunea %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Imposibil de deschis %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donare"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Jurnal activitate %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Salvare jurnal în:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "jurnal salvat"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "jurnal şters"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Setări %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Generalităţi"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Se lansează BitTorrent la pornirea Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimalizare în bara de sistem"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Textul barei de progres este întotdeauna negru\n(necesită repornire)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Salvare"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Salvare noile descărcări în:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Schimbare..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Intreabă unde să se salveze fiecare nouă descărcare"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Se descarcă..."
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "La pornirea unui nou torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Opreşte un alt torrent pentru a face loc"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Nu opri alt torrent care rulează"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Intreabă de fiecare dată"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Semănare"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Semănarea a terminat torentele: până când rata semănării atinge [_]% sau pentru [_]minute, oricare opţiune este prima."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Semănare pe un timp nedefinit"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Semănarea ultimului torent completat: până când rata semănării atinge [_] procente."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Reţea"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Căutare port disponibil:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "începere cu portul: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Activare asociere de port automată "
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP de raportat la tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Nu are nici un efect decât dacă sunteţi pe\naceeaşi reţea ca şi tracker-ul)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"ATENŢIE: Schimbarea acestor setări poate cauza\nfuncţionarea incorectă a %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Opţiune"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Valoare"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avansat"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Alegere director implicit pentru salvare"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Eşuare la ştergerea comenzii rapide: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Fişiere în \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Niciodată"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "A nu se descărca"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Descărcare normală"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Primul"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Descarcă primul"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Nume fişier"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Lungime"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Tragere"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "niciodată"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "primul"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Parteneri pentru \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Adresă IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Client"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Conexiune"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s descărcare"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s încărcare"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB descărcaţi"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB încărcaţi"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% finalizat"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s estimat de la partener"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID partener"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesat"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Blocat"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Oprit"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Încărcare optimistă"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "de la distanţă"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "partener rău"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d erori"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "acces interzis"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Informaţii pentru \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Nume torent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torent fără tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL pentru anunţ:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", într-un singur fişier"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", în %d fişiere"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Mărime totală:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Bucăţi:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Informaţii hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Salvare în:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Nume fişier:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Deschidere director"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Afişare listă de _fişiere"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Informaţii torent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Ştergere torent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Anulare torent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", va fi semănat pentru %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", va fi semănat un timp nedefinit."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Terminat, rata de partajare: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Terminat, %s încărcat"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Terminat"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Informaţii torent"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Listă _fişiere"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Listă _parteneri"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Schimbare locaţie"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Semănare pentru un timp nedefinit"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_pornire"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Finalizare"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Ştergere"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Anulare"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Sigur doriţi să ştergeţi \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Rata de partajare pentru acest torent este de %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Aţi încărcat %s pentru acest torent. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Se şterge acest torent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Finalizat"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "glisare în listă pentru semănare"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Eşuat"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "glisare în listă pentru reluare"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Aşteptare"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pauză"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Rulare"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Încărcare curentă: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Descărcare curentă: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Încărcare precedentă: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Descărcare precedentă: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Rată de partajare: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s parteneri, %s săditori. Total de la tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Copii distribuite: %d; Următorul: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Bucăţi: %d totale, %d terminate, %d parţiale, %d active (%d goale)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d bucăţi eronate + %s cereri neconsiderate"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% terminate, %s rămase"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Rată de descărcare"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Rată de încărcare"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s pornit"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "Ieşi_re"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Ieşire"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Deschidere fişier torent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Deschidere adresă _URL torent"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Creare torent _nou"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pauză/Rulare"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Afişare/ascundere torent _finalizate"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Redimensionare ferestră pentru potrivire"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Jurnal"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Setări"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ajutor"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "D_espre"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donare"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fişier"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Vizualizare"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Căutare torente"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(oprit)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(multiple)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Descărcare %s instaler în curs"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Instalare noul %s acum?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Doriţi să ieşiti %s şi să instalaţi noua versiune %s, acum?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr ""
+"Mai multe informaţii despre %s găsiţi la \n%s\nDoriţi să le accesaţi acum?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Vizitare pagina de asistenţă Web?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Există un torent finalizat în listă. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Doriţi sa-l ştergeţi?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Există %d torente finalizate în listă. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Doriţi să le ştergeţi pe toate?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Ştergere toate torentele finalizate?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Nici un torent finalizat"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nu există nici un torent finalizat care poate fi şters."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Deschidere torent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Schimbare locaţie de salvare pentru"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Fişierul există!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" există deja. Doriţi să alegeţi un nume de fişier diferit?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Locaţie de salvare pentru "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Directorul există deja!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" există deja. Intenţionaţi să creaţi un director identic în interiorul directorului deja existent?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(mesaj global):%s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Eroare"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Erori multiple. Faceţi clic pe OK pentru a vedea jurnalul de erori."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Se opreşte rularea torentului?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Sunteţi în curs de a porni \"%s\". Doriţi să opriţi, de asemenea, un alt torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Aţi donat deja?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Bun venit la noua versiune %s. Aţi donat deja?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Mulţumim!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Mulţumim pentru donaţie! Pentru a dona din nou, selectaţi \"Donare\" din meniul \"Ajutor\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Imposibil de pornit TorrentQueue, vizualizaţi erorile."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s creator de fişiere torent %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Creare fişier torent pentru acest fişier/director."
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Se alege..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Directoarele vor deveni torente grup)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Mărime bucată:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Utilizare _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Utilizare _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Noduri (opţional):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Comentarii:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Creere"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Gazdă"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Construire torente..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Verificare mărime fişiere..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Începere semănare"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "construire"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Terminat."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Am terminat construirea torentelor."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Eroare!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Eroare la construirea torentelor: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s sau mai recent este necesar"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d zile"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 zi %d ore"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ore"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minute"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d secunde"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 secunde"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Ajutor"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Întrebări frecvente:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Start"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Alegere un director existent..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Toate fişierele"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torente"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Creare un nou director..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Selectare un fişier"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Selectare un director"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Imposibil de încărcat starea salvată: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Imposibil de salvat starea UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Conţinut fişier de stare eronat"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Eroare la citirea fişierului \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "imposibil de restaurată în totalitate starea"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Fişier de stare eronat (introducere dublă)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Date eronate în \"%s\", imposibil de restaurat fişierul torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash eronat)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Fişiser de stare eronat (introducere eronată)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Fişier de stare UI eronat"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Versiune fişier de stare UI eronat"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Versiune neacceptată fişier de stare UI (de la o versiune client mai recentă?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Imposibil de şters fişier cache %s:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Fişier torent invalid. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Acest torent (sau unul cu acelaşi conţinut) rulează deja."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Acest torent (sau unul cu acelaşi conţinut) aşteaptă deja să ruleze."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torent în stare necunoscută %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Imposibil de scris în fişier "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torentul nu va fi repornit corect la repornirea clientului"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Imposibil de rulat mai mult de %d torente simultan. Pentru mai multe informaţii citiţi FAQ la %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Nu se va porni torentul întrucât sunt deja alte torente care aşteaptă să ruleze, iar acesta îndeplineşte deja condiţiile de oprire din semănare."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Nu se va porni torentul întrucât îndeplineşte deja condiţiile de oprire din semănare ca ultim torent finalizat."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Imposibil de obţinut cea mai recentă versiune de la %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Nu s-au putut analiza şirul de caractere al noii versiuni de la %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Imposibil de găsit o locaţie temporară corespunzătoare pentru a salva instalerul %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Nu este disponibil nici un fişier torent pentru instalerul %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"Programul %s %s de instalare pare să fie incomplet, corupt sau să lipsească."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Imposibil de lansat instalerul pe acest sistem de operare"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Nici un torent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Pornire descărcare"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Rulare normală"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Este posibil ca descărcarea să fie lentă:\nProbabil sunteţi în spatele unui parafoc/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Verificaţi conexiunea la reţea"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"directorul în care datele variabile precum informaţiile fastresume şi starea GUI este salvat. Implicit acesta este subdirectorul 'data' din directorul config."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"codarea caracterelor utilizată la sistemului local de fişiere. Dacă este gol, va fi autodetectat. Autodetectarea nu funcţionează folosind versiuni Python mai vechi de ver. 2.3."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Codul limbajului în standardul ISO care va fi folosit"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ip-ul care va fi raportat către tracker (nu are nici un efect decât dacă sunteţi în aceeaşi reţea ca şi trackerul)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"numărul portului vizibil, dacă este diferit de cel pe care îlascultă clientul local"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"porturilor minime pe care se va asculta, numărul va creşte dacă nu este disponibil"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "porturile maxime pe care se va asculta"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip care va fi considerat local"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "secunde între actualizările informaţiilor afişate"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minute între cererile pentru mai mulţi parteneri"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "numărul minim de parteneri pentru care nu se face o resolicitare"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "numărul de parteneri la care se opreşte iniţializarea conexiunilor noi"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "număr maxim de conexiuni incomplete de ieşire"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"numărul maxim de conexiuni permise, după ce aceste noi conexiuni vor fi imediat închise"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "dacă se face verificarea hash pe disc"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximum kB/s de încărcat, 0 înseamnă fără limită"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "numărul de încărcări cu care se completează cu deblocări optimiste"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"numărul maxim de fişiere care sunt deschise în acelaşi timp într-un torent cu mai multe fişiere, 0 înseamnă fără limită. Utilizat pentru a evita insuficienţa descriptorilor."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Iniţializarea unui client fără tracker. Aceasta trebuie activată pentru a putea descărca torente fără tracker."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "numărul de secunde între emiterile de semnale de menţinere a conexiuni"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "câţi biţi se vor verifica la fiecare cerere."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"marimea maximă a prefixului codării care se acceptă la conexiune - o valoare mare duce la deconectare."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "secunde între închiderile de socluri prin care nu s-a primit nimic"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "secunde între verificările conexiunilor care au pierdut contactul"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"marimea maximă a unei bucăţi trimise partenerilor, se închide conexiunea dacă este primita o cerere mai mare"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"intervalul maxim de timp pe care se va estima ratele curente de încărcare şi descărcare"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "intervalul maxim de timp pe care se va estima rata curentă de semănare"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"durata maximă care se aşteaptă între anunţurile de reîncercare în caz că acestea eşuează"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"secunde de aşteptat pentru venirea datelor printr-o conexiune, înainte de a presupune că legătura este blocată semi-permanenet"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"numărul de descărcări la care se trece de la căutare aleatoare la cele rare primele"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+"numărul de biţi care se vor scrie în memoria tampon pentru reţea într-o singură trecere."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"refuzarea conexiunii viitoare cu adrese de parteneri ostili care transmit date eronate"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+"nu se va face conectarea la mai mulţi parteneri care au aceeaşi adresă IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"dacă este diferită de zero, se setează opţiunea TOS pentru conexiunile cu partenerii la valoarea respectivă"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"se evită o eroare în libraria libc de pe BSD care va face ca citirile să meargă foarte încet."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adresa proxy-ului HTTP care este folosită pentru conectarea la tracker"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "închide conexiunile cu RST şi evită starea TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Utilizează librăriile de reţea Twisted pentru conexiunile de reţea. 1 înseamnă că se foloseşte twisted, 0 înseamnă că nu se foloseste twisted, -1 înseamnă că se face autodetecţie, şi se preferă twisted"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"nume fişier (pentru torentele cu un singur fişier) sau nume director (pentru torentele cu mai multe fişiere) în care se va salva torentul, atunci când nu se ţine seama de numele implicit al torentului. Vezi, de asemenea, --save_in, dacă nici unul nu e precizat utilizatorul va fi întrebat de locaţia salvării."
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "se afişează interfaţa avansată"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"durata maximă de timp în minute în care se va face semănarea unui torent complet înainte de oprirea semănării"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"rata minimă de încărcare/descărcare, în procente, care va fi atinsă înainte de oprirea semănării. 0 înseamnă fără limită."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"rata minimă de încărcare/descărcare, in procente, care va fi atinsă înainte de oprirea semănării ultimului torent. 0 înseamnă fără limită."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Semănarea fiecărui torent complet pe un timp nedefinit (până când utilizatorul anulează acţiunea)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Semănarea ultimului torent pe un timp nedefinit (până când utilizatorul anulează acţiunea)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "porneşte descărcarea în starea de pauză"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"specifică cum ar trebui să se comporte aplicaţia când utilizatorul încercă să pornească manual un alt torent: \"replace\" înseamnă că întotdeauna se va înlocui torentul rulat cu cel nou, \"add\" înseamnă că întotdeauna se va adăuga lângă torentul rulat, în paralel, iar \"ask\" înseamnă că utilizatorul va fi întrebat de fiecare dată."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Porneşte BitTorrent minimalizat"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"suprascrie versiunea raportată de verificarea http şi activează modul detaliat de verificare al versiunii"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"suprascrie numărul curent folosit în verificarea versiunii şi activează modul depanare la verificarea versiunii"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"specificare mărime fereastră şi poziţie, în formatul: LUNGIMExINALTIME+POZITIEX+POZITIEY"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"nume fişier (pentru torentele cu un singur fişier) sau nume director (pentru torentele cu mai multe fişiere) în care se va salva torentul, atunci când nu se ţine seama de numele implicit al torentului. Vezi, de asemenea, --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"numărul maxim de încărcări permise în acelaşi timp. -1 înseamnă un număr rezonabil (se speră) bazat pe -max_upload_rate. Valorile automate sunt valabile numai atunci când se rulează doar câte un torent."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"directorul local în care se va salva conţinutul torentului. Fişierul (torente cu un singur fişier) sau directorul (torent(e) cu mai multe fişiere) va fi creat în acest director folosind numele implicit specificat în fişierul .torrent. Vezi, de asemenea, şi --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "dacă se solicită o locaţie în care se vor salva fişierele"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"directorul local unde se salvează torentele, folosind un nume determinat de --saveas_style. Dacă este lăsat gol fiecare torent va fi salvat în directorul corespunzător fişierului .torent"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "cât de des se scanează directorul cu torente, în secunde"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"Pentru a evita problemele cu tracker-ul, aşteaptă atâtea secunde înainte de a porni torrenul după ce a fost găsit."
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Cum să numiţi fişierele descărcate din torente:1: folosiţi numele torentului (minus .torrent); 2: folosiţi numele codat în torent; 3: creaţi un director cu numele torentului (minus .torrent) şi realizaţi salvarea în acel director folosind numele codat din fişierul torent; 4: dacă numele torentului (minus .torrent) şi numele codat în fişierul torent este acelaşi, folosiţi acel stil de redenumire (stilul 1/2), dacă nu, creaţi un director intermediar ca în stilul 3; ATENŢIE: opţiunile 1 şi 2 au opţiunea să suprascrie fişiere fără o anunţare în prealabil şi pot prezenta probleme de securitate."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"dacă se va afişa întreaga cale sau conţinutul torentului pentru fiecare torent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "directorul în care se vor căuta fişiere .torrent (semi-recursiv)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "dacă se vor afişa informaţii de diagnostic la stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "la ce putere a lui 2, se va seta mărimea unei bucăţi"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "nume implicit tracker"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"Daca este fals se va creea un torent fara tracker,in loc de URL-ul de anuntare, folositi un nod de incredere sub forma <ip>:<port> sau un sir gol de caractere pentru a introduce niste noduri din tablea de rutare"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "descarcare completa!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<necunoscut>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "gata in %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "descarcare reusita"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB donat / %.1f MB tras)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB donat / %.1f MB tras)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d vizibil(i) acum, plus %d copii distribuite (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d copii distribuite (urmatorul: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d vizibil(i) acum"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "EROARE:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "salvare: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "marimea fisierului:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "procent gata: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "timp ramas: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "trage in: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "rata tragere: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "rata donare: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "rating impartire: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "stare sadire: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stare parteneri: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Nu puteti specifica si --save_as si --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "oprire in curs"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Eroare la citirea configuratiei: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Eroare la citirea fisierului .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "trebuie sa specificati un fisier .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Nu a reusit initializarea interfetei text, nu pot continua."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Acesta interfata de descarcare necesita modului Pyton standard \"curses\", care din nefericire nu este diponibil pentru versiune nativa de Windows a Python. Este insa disponibila pentru versiunea de Cygwin a Python, care ruleaza pe toate sistemele Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Se mai poate folosi si \"bittorrent-console\" pentru descarcare."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fisier:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "marime:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "destinatie:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progres:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "statut:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "viteza tragere:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "viteza donare:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "impartire:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "saditori:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "parteneri:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d vizibili acum, plus %d copii distribute(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "erori:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "eroare:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr " # IP Donat Tras Gata Viteza"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "trag %d bucati, am %d fragmente, %d din %d bucati complete"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Aceste erori s-au produs in timpul executiei:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Mod de folosire: %s URL_TRACKER [FISIERTORRENT [FISIERTORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "anunt vechi pentru %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "nici un torent"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "EROARE DE SISTEM - EXCEPTIE GENERATA"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Atentie: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " nu este un director"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "eroare: %s\nruleaza fara argumente pentru o explicare a parametrilor"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nEXCEPTIE:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Poti folosi si \"btdownloadheadless.py\" pentru a descarca."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "conectare la parteneri"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Timp ramas %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Marime"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Donare"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Total:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+"(%s) %s - %s parteneri %s saditori %s copii distribuite - %s jos %s sus"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "eroare: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nruleaza fara argumente pentru o explicare a parametrilor"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "comentariu optional ce va fi pus in .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "fisier destinatie optional pentru torent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - decodare %s fisiere metainfo"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Mod de folosire: %s [FISIERTORRENT [FISIERTORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "fisierul metainfo: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "nume fisier: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "marime fisier:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "fisiere: "
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "nume director: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "marimea arhivei:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "url pentru anuntare: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "noduri fara tracker:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "comentariu:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Lun"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Mie"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Joi"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Vin"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sam"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Dum"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Ian"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Mai"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Iun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Iul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Oct"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Noi"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Compresat: %i Necompresat: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Optiunile nu s-au putut salva permanent: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Eroare la citirea fisierului de configurare. Vechiul fisier de configurare este pastrat in \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Optiune de configurare eronata: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Trebuia sa opriti %s si sa il reinstalati. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Nu s-a putut gasi traducerea pentru limba \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Fisierul %s apartine unui alt torrent care ruleaza"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Fisierul %s exista deja, dar nu este un fisier obisnuit"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Citire scurta - ceva a sectionat fisierele?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Formatul fisierului fastresume este nesuportat, poate apartine altei versiuni de client?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Se pare ca un alt program a mutat, redenumit, sau a sters fisierul, sau %s sa blocat ultima oara cand a fost rulat."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Se pare ca un alt program a modificat fisierul, sau %s sa blocat ultima oara cand a fost rulat."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Se pare ca un alt program a schimbat marimea fisierului, sau %s sa blocat ultima oara cand a fost rulat."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Nu s-au putut citi datele fastresume: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "conexiune refuzata"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Ati cerut sa nu se faca refolosirea la legare. Nu se poate poate face asta."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() ar trebui apelat doar odata pentru fiecare reactor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() s-ar putea sa nu returneze nimic pana cand nu se va inregistra activitate, si s-ar putea sa nu proceseze evenimentul dorit. Folositi listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "date eronate in responsefile - totalul este prea mic"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "date eronate in responsefile - totalul este prea mare"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "verificare fisierul existent"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 sau informatiile fastresume nu se potrivesc cu starea fisierului (date lipsa)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Informatii fastresume eronate (fisierele contin mai multe date)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Informatii fastresume eronate (valoare ilegala)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "datele sunt corupte pe disc - poate ca aplicatia ruleaza de doua ori?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"fisierele au fost considerate complete la pornire, dar bucatile nu s-au verificat la hash check"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Nu s-a putut seta activatorul de semnal: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "anulate \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "adaugate \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "se astepata verificarea hash"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "descarcare"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Se reciteste fisierul de configurare"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Nu se poate specifica numele fisierului .torrent atunci cand se genereaza mai multe torente in acelasi timp"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+"Codarea sistemului de fisiere \"%s\" nu este suportata in aceasta versiune"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Nu s-a putut converti numele de fisier/director \"%s\" la utf-8 (%s). Se poate ca, codarea presupusa a sistemului de fisiere \"%s\" este gresita sau numele fisierului contine bytes ilegali."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Numele de fisier/director \"%s\" contine valori unicode rezervate care nu corespund cu caractere."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Nu s-a putut citi directorul "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Nu s-a putut afla starea "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "sterg %s (o sa fie re-adaugat)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**atentie** %s este o dublura pentru %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**atentie** %s are erori"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... reusit"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "stergere %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "gata verificare"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Nu s-a putut afla starea %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Nu se poate descarca sau deschide \n%s\nIncearca sa folosesti un browser pentru a descarca un fisier torrent."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s sau mai nou este necesar"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Este prea tarziu pentru schimbul RawServer, %s a fost deja folosit."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Anuntul catre tracker inca nu este complet la %d secunde dupa pornire"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problema la conectarea la tracker, gethostbyname a esuat -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problem la conectarea la tracker - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "date eronate de la tracker - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "respins de tracker - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Anulare torent caci a fost respins de tracker cand nu era conectat la nici un partener. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr " Mesaj de la tracker: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "atentionare de la tracker - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Cautarea in modul fara tracker esuata:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "metainfo eronat - nu este un dictionar"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "metainfo eronat - cheia bucatilor este eronata"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "metainfo eronat - marime ilegala a bucatilor"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "metainfo eronat - nume eronat"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "numele %s nu este permis din motive de securitate"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "amestecare fisier singular/multiple"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "metainfo eronat - marime eronata"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "metainfo eronat - \"files\" nu este o lista de fisiere"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "metainfo eronat - fisierul trebuie sa fie un dict"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "metainfo eronat - cale eronata"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "metainfo eronat - calea catre director eset eronata"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "calea %s nu este permisa din motive de securitate"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "metainfo eronat - calea este dublata"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"metainfo eronat - numele este folosit si ca nume de fisier si ca nume de subdirector"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "metainfo eronat - tipul obiectului este gresit"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "metainfo eronat - nu exista URL pentru anuntare"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "metainfo eronat - nodul nu este o lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "metainfo eronat - lista de noduri trebuie sa aiva numai 2 elemente"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "metainfo eronat - nodul gazda trebuie sa fie un sir de caractere"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "metainfo eronat - port nodului trebuie sa fie un numar intreg"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "motivul esuarii trebuie sa fie un sir de caractere"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "mesajul de atentionare trebuie sa fie un sir de caractere"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"intrare invalida in lista partenerilor - informatiile despre parteneri trebuie sa fie un dict"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"intrare invalida in lista partenerilor - ip parteneri trebuie sa fie un sir de caractere"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"intrare invalida in lista partenerilor - porturi parteneri trebuie sa fie un numar intreg"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "intrare invalida in lista partenerilor - peerid invalid"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "lista eronata a partenerilor"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "interval eronat de anuntare"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "interval minim eronat de anuntare"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "id tracker eronat"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "numar eronat de parteneri"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "numar eronat de saditori"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"last\" intrare eronata"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Mod de folosire: %s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[OPTIUNI] [DIRECTORTORRENT]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Daca un argument este prezent fara optiuni va fi considerata valoarea\ndin optiunea torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[OPTIUNI] [FISIERETORRENT]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[OPTIUNI] [FISIERTORRENT]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[OPTIUNI] URL_TRACKER FISIER [FISIER]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumentele sunt -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (implicit "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "cheie necunoscuta "
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parametrul a fost pus la sfarsit dar fara valoare"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "parcurgerea liniei de comanda a esuat la "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Optiunea %s este necesara."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Trebuie specificate cel putin %d argumente."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Prea multe argumente - %d maxim."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "format eronat al %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Portul pe care ascult."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fisier in care se pastreaza informatiile recente despre descarcari"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+"timpul dupa pierderea legaturii dupa care se face inchiderea conexiunii"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "secunde intre salvarile dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "secunde intre descarcari ce expira"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "secunde cat asteapta un client intre reanuntari"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"numarul implicit de parteneri catre care se trimite un mesaj de informare daca clientul nu specifica un numar"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "timpul care se asteapta intre verificarile de stare ale conexiunilor"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"de cate ori se verifica daca un utilizator este in spatele unui NAT (0 = nu verifica)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"daca se vor adauga intrari in jurnal pentru rezulatele verificarilor nat"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+"timpul minim care a trecut de la ultima curatare ca sa se faca inca una"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"timpul minim in secunde inainte ca memoria cache sa fie considerata expirata si sa fie curatata"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"permite descarcari pentru torente in acest director (si recursiv in subdirectoarele directoareler care nu au fisiere torent). Daca e setat, torentele din acest director apare in pagina de informatii/scrape chiar daca au sau nu parteneri"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"permite cheilor speciale din torente din allowed_dir sa afecteze accesul tracker-ului"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "daca se va redeschide fisierul jurnal la primirea semnalului HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"daca se va arata o pagina de informatii atunci cand directorul radacina al tracker-ului este incarcat"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "un URL catre care se va redirectiona pagina de informatii"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "daca se vor arata numele din directorul permis"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"fisierul ce contine datele x-icon care sunt returnate atunci cand browserul cere favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignora parametrul -ip GET de la calculatoarele care nu au IPuri de pe aceeasi retea locala (0 = niciodata, 1 = mereu, 2 = ignora daca verificarea NAT nu este pornita). Proxy-urile HTTP care dau adresa clientului originar sunt tratate la fel ca --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"fisier pentru scrierea jurnalului trackerului, folositi - pentru stdout (implicit)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"folosire cu allowed_dir; adauga /file?hash={hash} url care permite utilizatorilor sa descarce fisierul .torrent"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"tin torentele moarte dupa ce expira ( asa ca ele inca apar in /scrape si pe pagina de internet). Conteaza nu mai daca allowed_dir nu este setat"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "acces scrape permis (poate fi nimic, specific or in totalitate)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "numarul maxim de parteneri care primesc cu o singura cerere"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"fisierul dumneavoastra poate ca eista undeva in univers\ndar acolo, caci aici nu-i\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+"**atentie** fisierul pentru iconita preferata (favicon) -- %s -- nu exista."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**atentie** fisierul de stare (statefile) %s corupt; resetez"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Jurnal Pornit: "
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**atentie** nu am putut redirectiona stdout spre fisierul jurnal: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Jurnal redeschis: "
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**atentie** nu am putut redeschide fisierul jurnal"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "functia scrape specificata nu este disponibila pe acest tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "functia scrape nu este in totalitate disponibila pe acest tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "functia get nu este disponibila pe acest tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Fisierul de descarcat nu este autorizat pentru folosire pe acest tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "rulati fara argumente pentru o explicare a parametrilor"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Oprire: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Nu pot porni doua instante separate pentru acelasi torent."
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Ascunde %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Arata %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "acesta nu este un sir de caractere corect bencoded"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "valoarea bencoded eronata (exista date dupa un prefix valid)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport este mai mic decat minport - nici un port de verificat"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Nu s-a putut deschide un port pentru ascultare: %s. "
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Nu s-a putut deschide un port pentru ascultare: %s. "
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Verificati setarile pentru zona de oprturi."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Pornire initial"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Nu s-au putut incarca datele pentru o continuare rapida: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Se va face o verificare hash completa."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "bucata %d a esuat la verificarea hash, va fi descarcata din nou"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"S-a incercat descarcarea unui torent fara tracker cand aceasta optiune nu este activata."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "descarcare esuata: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Eroare de I/O: Nu mai este loc pe disc, sau nu se poate creea un fisier asa mare:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "oprit datorita unei erori de I/O: "
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "oprit datorita unei erorii a SO: "
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "oprit datorita exceptiei interne: "
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Erori aditionale la inchidere datorita erorii: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Nu s-a putut sterge fisierul de fastresume dupa esuare:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "sadire"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Nu s-au putut scrie datele de fastresume: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "oprire"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Se pare ca aveti o versiune mai veche de Python care nu suporta detectarea codarii sistemului de fisiere. Presupunem 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python a esuat s-a autodetecteze codare sistemului de fisiere. Vom folosi in schimb 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Codarea sistemului de fisiere '%s' nu este suportata. Folosesc 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Componenta eronata in calea catre fisier: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Acest fisier .torrent a fost creat cu o aplicatie stricata si numele de fisiere au fost incorect codate. Unele sau toate numele de fisiere pot aparea diferit fata de modul in care creatorul fisierului .torrent a intentionat."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Acest fisier .torrent a fost creat cu o aplicatie stricata si are valori eronate pentru caractere, care nu corespund unor caractere reale. Unele sau toate numele de fisiere pot aparea diferit fata de modul in care creatorul fisierului .torrent a intentionat."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Acest fisier .torrent a fost creat cu o aplicatie stricata si numele de fisiere au fost incorect codate. Numele folosite pot fi insa corecte."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Setul de caractere folosit de sistemul local de fisiere (\"%s\") nu poate reprezenta toate caracterele folosite in scrierea numelor fisierelor din acest torent. Numele de fisiere au fost schimbate din cele originale."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Sistemul de fisiere Windows nu suporta unele din caracterele folosite in numele fisierelor acestui torrent. Numele de fisiere au fost schimbate fata de cele originale."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Acest fisier .torrent a fost creat cu o aplicatie stricata si are cel putin un fisier sau director cu nume eronat. Dar din moment ce asemenea fisiere au fost marcate ca avand marimea 0 acele fisiere sunt ignorate."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Command nesuportata: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Socket-ul de control nu s-a putut creea: este deja folosit"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Numele socket-ului de control vechi nu s-a putut sterge:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Socket-ul de control nu s-a putut crea: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Comanda nu s-a putut trimite: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex global deja creeat."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Nu s-a putut gasi un port deschis!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Nu s-a putut creea directorul de date al aplicatiei!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Nu s-a putut bloca un mutex global pentru fisierul controlsocket!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "O instanta de BT nu a fost inchisa corect.Se continua."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "O alta instanta a BT ruleaza, dar \"%s\" nu exista.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Se incearca ghicirea portului."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Portul a fost gasit: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Nu se poate gasi portul."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Stare IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Comunicatia DDE pornita."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "esuare la dezinregistrarea sau la inchiderea socket-ului: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "am pierdut socket-ul serverului"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Eroare in manuirea conexiunii acceptate: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Oprire datorita instabilitatii TCP stack. Cititi FAQ la %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "s-a primit un tip de mesaj necunoscut"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "timpul a expirat"
+
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..bf651f1
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,2855 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 14:07+0300\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: Russian <doc@lafox.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Установите Python версии %s или выше"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "устарела, не используйте"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Обращение к другому %s процессу невозможно, хотя он, видимо, используется."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr " Закрытие всех окон %s может устранить эту проблему."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s уже работает"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Обращение к другому %s процессу невозможно."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Необходим PyGTK версии %s или выше"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "перетащите для изменения порядка"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "нажатие правой кнопкой мыши откроет меню"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "модем"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/кабель - 128 кбит/с"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/кабель - 256 кбит/с"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL - 768 кбит/с"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Введите URL торрента"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Введите URL торрента для открытия:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Максимальная скорость выгрузки:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Временно остановить все запущенные торренты"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Возобновить загрузку"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Доступна новая версия %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Доступна более новая версия %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Вы используете %s, а доступна новая версия %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Вы всегда можете получить последнюю версию с \n %s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Загрузить поз_же"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Загрузить _сейчас"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Напомнить позже"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "О %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Бета-версия"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Версия %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Не удается открыть %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Пожертвовать"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Журнал активности %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Сохранить журнал в:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "журнал сохранен"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "журнал очищен"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Настройки"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Общие"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Запускать BitTorrent при загрузке Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Свернуть в область уведомления"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Индикатор выполнения всегда чёрный\n(требуется перезапуск)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Сохранение"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Сохранять загруженные файлы в:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Изменить..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Спрашивать место сохранения при каждой новой загрузке"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Загрузка"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "При запуске нового торрента:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Остановить торрент, чтобы освободить ресурсы"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Не останавливать другие запущенные торренты"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Спрашивать каждый раз"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Раздача"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Раздавать завершённые торренты: до тех пор пока коэффициент раздачи не достигнет [_] процентов или в течение [_] минут, в зависимости от того, что произойдёт раньше."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Раздавать бесконечно"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Раздавать последний завершённый торрент: до тех пор пока коэффициент раздачи не достигнет [_] процентов."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Сеть"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Искать доступный порт:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "начиная с порта: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Включить автоматическую переадресацию данных между портами"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Сообщать трекеру следующий IP-адрес:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Не действует, если вы не находитесь\n в одной локальной сети с трекером)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "ВНИМАНИЕ! Изменение этих настроек\nможет вызвать ошибки в работе %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Параметр"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Значение"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Расширенный"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Выберите каталог по умолчанию для сохранения загруженных файлов"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Невозможно удалить ярлык: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Файлы в \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Никогда"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Никогда не загружать"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Обычный"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Загружать в обычном режиме"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Первый"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Загружать первым"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Имя файла"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Длина"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Загрузка"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "никогда"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "первым"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Пары для \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP-адрес"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Клиент"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Соединение"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "КБ/с загрузка"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "КБ/с выгрузка"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "МБ загружено"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "МБ выгружено"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% завершено"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "прим. скор. загрузки в КБ/с"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID пары"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Заинтересован"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Придушен"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Приостановлен"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Оптимистичная выгрузка"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "удалённый"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "локальный"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "плохая пара"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d прошло"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d не прошло"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "заблокирован"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ок"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Информация для \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Имя торрента:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(торрент без трекера)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Url трекера:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", в одном файле"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", в %d файлах"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Общий размер:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Частей:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Хэш - информация:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Сохранить в:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Имя файла:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Открыть каталог"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Показать список _файлов"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Информация о торренте"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Удалить торрент"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Прервать торрент"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", будет раздаваться в течении %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", будет раздаваться бесконечно."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Готово, коэффициент раздачи: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Готово, %s выгружено"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Готово"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Информация о _торренте"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Файлы"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Качающие"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Изменить расположение"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Раздавать бесконечно"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Пере_запуск"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Завершить"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Удалить"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Прервать"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Удалить \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Ваше коэффициент раздачи для этого торрента - %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "В этом торренте вы выгрузили %s. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Удалить этот торрент?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Готово"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "перетащите в список, чтобы раздавать"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Сбой"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "перетащите в список, чтобы возобновить"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Ожидание"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Пауза"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Выполняется"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Текущая выгрузка: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Текущая загрузка: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Предыдущая выгрузка: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Предыдущая загрузка: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Коэффициент раздачи: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s пар, %s раздач. Всего на трекере: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Рассредоточенных копий: %d; Следующая: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Части: всего %d, полных %d, неполных %d, активных %d (пустых %d)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d плохих частей + %s отклоненных запросов"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% готово, %s осталось"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Скорость загрузки"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Скорость выгрузки"
+
+#: bittorrent.py:2328
+msgid "NA"
+msgstr "Нет данных"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s запущен"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Выход"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "В_ыход"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Открыть файл торрента"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Открыть _URL торрента"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Создать _новый торрент"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Пауза/Продолжить"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Показать/Скрыть _завершённые торренты"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "Изменить _размер окна на оптимальный"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Журнал"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Настройки"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Справка"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_О программе"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Пожертвовать"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Файл"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Вид"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Искать торренты"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(остановлен)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(несколько)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Установщик %s уже загружается"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Установить новый %s?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Выйти из %s и установить новую версию %s?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s справка доступна по адресу\n%s\nОткрыть справку?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Посетить веб-страницу со справкой?"
+
+#: bittorrent.py:3216
+msgid "There is one finished torrent in the list. "
+msgstr "В списке один завершённый торрент. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Удалить его?"
+
+#: bittorrent.py:3219
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "В списке %d завершённых торрентов."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Удалить все?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Удалить все завершённые торренты?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Нет завершённых торрентов"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Нет завершённых торрентов для удаления."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Открыть торрент:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Изменить место сохранения для "
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Файл уже существует!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" уже существует. Указать другое имя файла?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Место сохранения для "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Каталог существует!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" уже существует. Создать идентичный каталог с тем же именем внутри имеющегося каталога?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(глобальное сообщение): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Ошибка"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Возникло несколько ошибок. Нажмите ОК, чтобы просмотреть журнал ошибок."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Остановить запущенный торрент?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "Вы собираетесь запустить \"%s\". Остановить другой запущенный торрент?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Вы сделали пожертвование?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Добро пожаловать в новую версию %s. Вы сделали пожертвование?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Спасибо!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Спасибо за пожертвование! Чтобы сделать пожертвование ещё раз, выберите \"Пожертвование\" из меню \"Справка\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Невозможно запустить TorrentQueue, см. ошибки выше."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s - создатель торрент-файла %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Создать торрент-файл для этого файла/каталога:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Выбрать..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Каталоги станут пакетными торрентами)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Размер части:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Использовать _трекер:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Использовать _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Узлы (не обязательно):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Комментарии:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Создать"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Хост"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Порт"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Создаются торренты..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Проверяются размеры файлов..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Начать раздачу"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "создание "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Готово."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Создание торрентов завершено."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Ошибка!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Ошибка создания торрентов: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Нужен GTK версии %s или выше"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d дней"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 день %d часов"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d часов"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d минут"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d секунд"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 секунд"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Справка"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Часто задаваемые вопросы (FAQ):"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Поехали!"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Выбрать существующий каталог..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Все файлы"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Торренты"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Создать новый каталог..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Выбрать файл "
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Выбрать папку"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Невозможно загрузить сохранённое состояние: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Невозможно сохранить состояние пользовательского интерфейса: "
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Неверное содержимое файла состояния"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Ошибка чтения файла \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "невозможно полностью восстановить состояние"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Неверный файл состояния (повторяющийся элемент)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Повреждённые данные в \"%s\", невозможно восстановить торрент."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(несоответствие infohash)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Неверный файл состояния (плохой элемент)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Недопустимый файл состояния пользовательского интерфейса"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Недопустимая версия файла состояния пользовательского интерфейса"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Неподдерживаемая версия файла состояния пользовательского интерфейса (клиент более новой версии?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Невозможно удалить файл кэша %s:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Это неверный торрент-файл. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Этот торрент (или торрент с таким же содержимым) уже запущен."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Этот торрент (или торрент с таким же содержимым) уже ждёт своей очереди для запуска."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Торрент находится в неизвестном состоянии %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "Невозможно записать файл "
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "торрент не будет корректно перезапущен при повторном запуске клиента"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Невозможно запустить одновременно более %d торрентов. Дополнительную информацию смотрите в FAQ на %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Торрент не запускается, т.к. в очереди уже стоят другие торренты, и этот торрент попадает под действие настроек, останавливающих раздачу."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Торрент не запускается, т.к. он уже попадает по действие настроек, останавливающих раздачу последнего последнего завершённого торрента."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Невозможно получить последнюю версию с %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Невозможно разобрать строку новой версии из %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Невозможно найти подходящее временное хранилище для сохранения установщика %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Торрент-файл для установщика %s %s недоступен."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"Файл программы установки %s %s является неполным, отсутствует или поврежден."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Невозможно запустить установщик на этой ОС"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Нет торрентов"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Начать загрузку"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Выполнение в нормальном режиме"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Скорость загрузки может быть низкой:\nвозможно, запущен межсетевой экран/NATted"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Проверьте подключение к сети"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"каталог, в котором хранятся изменяемые данные, такие как информация fastresume и состояние пользовательского интерфейса. По умолчанию это подкаталог 'data' в каталоге 'config' BitTorrent'а."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"кодировка символов, используемая в локальной файловой системе. Если оставить пустым, будет сделано автоопределение. Автоматическое определение не работает в python версии ниже 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Используемый ISO-код языка"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"сообщать этот ip трекеру (не работает, если вы находитесь в одной локальной сети с трекером)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"номер порта, видимый для всего мира, если он отличается от того, который клиент прослушивает локально"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"минимальный номер порта для привязки; автоматически увеличивается, если порт недоступен"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "максимальный номер порта для привязки"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "локальная привязка к указанному ip "
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "секунд между обновлениями отображаемой информации"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "минут ожидания между запросами у трекера дополнительных пар"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "минимальное количество пар, чтобы не повторять запрос"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "количество пар, при котором установка новых соединений прекращается"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "максимальное число исходящих неполных подключений"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"максимальное число соединений; после этого новые входящие подключения будут немедленно закрываться"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "проверять хэши на диске"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "максимальная скорость выгрузки в кБ/с, 0 - без ограничений"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"количество выгрузок для заполнения дополнительными оптимистичными непридушенными парами"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"максимальное количество файлов в торренте из нескольких файлов, которое можно держать открытыми одновременно, 0 - без ограничений. Используется, чтобы избежать нехватки доступных дескрипторов файлов."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Запустить клиент без трекера. Этот параметр должен быть включен, чтобы загружать торренты без трекеров."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"размер паузы в секундах между отправками запросов для поддержки соединения"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "количество байт, передаваемых в запросе"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"максимальная длина кодировки префикса при передаче - значения большей величины будут сбрасывать подключение."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"время ожидания в секундах перед закрытием сокетов, которые ничего не получают"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "время ожидания в секундах между проверками тайм-аутов соединений"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"максимальный размер части, отправляемой загружающим - соединение будет закрыто, если будет получен запрос на часть большего размера"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"максимальный промежуток времени для оценки текущих скоростей загрузки и выгрузки"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "максимальный промежуток времени для оценки текущей скорости раздачи"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "максимальное время ожидания между повторными обращениями к трекеру"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"время ожидания в секундах данных, пришедших через соединение, перед тем как считать их временно придушенными"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"количество загрузок, начиная с которого переключаться со случайных на редкие"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "количество байт для одновременной записи в сетевые буферы"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"отклонять дальнейшие подключения с адресов с поврежденных или злонамеренных пар, которые отправляют некорректные данные"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "не подключаться к нескольким парам, имеющим одинаковый IP-адрес"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"если не равен нулю, установить параметр TOS для подключений к парам равным этому значению"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"включить исправление ошибки в libc BSD, которая очень замедляла чтение файлов"
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "адрес HTTP прокси для подключения к трекеру"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+"закрывать соединения, используя RST, и предотвращать состояние TIME_WAIT для TCP"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr "Number of rows in translate mode"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"имя файла (для торрентов с одним файлом) или имя каталога (для пакетных торрентов) для сохранения торрента в него, переопределяя имя, указанное по умолчанию торренте. См. также --save_in, если ни один из этих параметров не указан, пользователю будет предложено указать место сохранения."
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "показывать расширенный интерфейс пользователя"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"максимальное время в минутах для раздачи завершённого торрента до прекращения его раздачи"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"минимальное соотношение выгрузки/загрузки в процентах, по достижении которого раздача прекращается. 0 снимает ограничение"
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"минимальное соотношение выгрузки/загрузки в процентах, по достижении которого прекращается раздача последнего торрента. 0 снимает ограничение"
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Бесконечно раздавать все завершённые торренты (пока пользователь не отменит их)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Бесконечно раздавать последний завершённый торрент (пока пользователь не отменит его)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "запуск клиента в приостановленном режиме"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"определяет поведение приложения, когда пользователь вручную пытается запустить другой торрент: \"заменять\" означает всегда заменять текущий торрент на новый, \"добавлять\" означает всегда добавлять текущий торрент в параллельном режиме и \"спрашивать\" означает каждый раз спрашивать пользователя."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Запускать BitTorrent в свёрнутом состоянии"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"перезаписать версию, установленную после http-проверки наличия новой версии, и включить режим отладки проверки версии"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"перезаписать текущую версию, которая использовалась при проверке наличия новой версии, и включить режим отладки проверки версии"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"укажите размер и положение окна в формате: ШИРИНА x ВЫСОТА + СМЕЩЕНИЕ ПО X + СМЕЩЕНИЕ ПО Y"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"имя файла (для торрентов с одним файлом) или имя каталога (для пакетных торрентов) для сохранения торрента в него, переопределяя имя, указанное по умолчанию торренте. См. также --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"максимальное количество загрузок за раз. -1 означает (будем надеяться) разумное число, основанное на --max_upload_rate. Автоматические значения имеют смысл только в случае, если одновременно запущен один торрент."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"локальный каталог, в котором будет сохраняться содержимое торрентов. В этом каталоге будет создан файл (для торрента с одним файлом) или каталог (для пакетных торрентов) с именем по умолчанию, указанном в файле .torrent. См. также --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "спрашивать или нет о том, куда сохранять загруженные файлы"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"локальный каталог, в который будут сохраняться торренты с использованием имени, определённого через --saveas_style. Если оставить пустым, все торренты будут сохраняться в каталоге соответствующего файла .torrent"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "как часто проверять каталог торрента (в секундах)"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"количество секунд, которое должно пройти после нахождения торрента перед его запуском во избежание конфликта с трекером"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Как называть загрузки торрентов: 1: использовать имя файла торрента (без .torrent); 2: использовать имя, зашифрованное в файле торрента; 3: создавать каталог с именем файла торрента (без .torrent) и сохранять в этом каталоге с использованием имени, зашифрованном в файле торрента; 4: если имя файла торрента (без .torrent) и имя, зашифрованное в файле торрента, одинаковые, использовать это имя (стили 1/2), в противном случае создать промежуточный каталог, согласно стилю 3; ВНИМАНИЕ: в вариантах 1 и 2 присутствует возможность перезаписи файлов без предупреждения и возможны проблемы с безопасностью."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "показывать ли полный путь или содержимое торрента для всех торрентов"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "каталог для поиска файлов .torrent (полу-рекурсивно)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "выводить ли диагностическую информацию на stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "какой установить размер части"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "имя трекера по умолчанию"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"если false, создать торрент без трекера; вместо объявления URL использовать надёжный узел в виде <ip>:<порт> или пустую строку для заполнения некоторыми узлами из вашей таблицы маршрутизации"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "загрузка завершена!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<неизвестно>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "завершён в %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "загрузка завершена"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f МБ выгр. / %.1f МБ загр.)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f МБ выгр. / %.1f МБ загр.)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d видно сейчас, плюс %d рассредоточенных копий (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d распределённых копий (следующая: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d видно сейчас"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "ОШИБКА:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "сохранение: "
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "размер файла: "
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "процентов готово: "
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "осталось времени: "
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "загружать в: "
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "скорость загрузки: "
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "скорость отдачи: "
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "коэф. раздачи: "
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "статус раздающих: "
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "статус качающих: "
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Вы не можете указать одновременно и --save, и --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "завершение работы"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Ошибка чтения конфигурации: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Ошибка чтения файла .torrent: "
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "вы должны указать файл .torrent"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Сбой инициализации текстового интерфейса пользователя, невозможно продолжить."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Для этого интерфейса загрузки необходим стандартный модуль Python \"curses\", который к сожалению недоступен для родного Windows-порта Python. Однако он доступен для Cygwin-порта Python, работающего на всех системах Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Вы должны использовать \"консоль bittorrent\" для загрузки."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "файл:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "размер:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "назнач.:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "прогресс:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "статус:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "скорость загр.:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "скорость выгр.:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "раздача:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "источники:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "пары:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d видно сейчас, плюс %d рассредоточенных копий (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "ошибки:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "ошибка:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Выгрузка Загрузка Завершено Скорость"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "загружено %d частей, есть %d фрагментов, %d из %d частей завершено"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Во время выполнения возникли следующие ошибки:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Использование: %s URL-ТРЕКЕРА [ТОРРЕНТ-ФАЙЛ [ТОРРЕНТ-ФАЙЛ ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "старый анонс для %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "нет торрентов"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "СИСТЕМНАЯ ОШИБКА - СГЕНЕРИРОВАЛОСЬ ИСКЛЮЧЕНИЕ "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Предупреждение: "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " не является каталогом"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "ошибка:%s\nзапустите без аргументов для вызова справки по параметрам"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nИСКЛЮЧЕНИЕ:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Для загрузки вы можете использовать \"btdownloadheadless.py\"."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "подключение к парам"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Оставшееся время в %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Размер"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Выгрузка"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Всего:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s пар %s раздач %s розданных копий - %s загр. %s выгр."
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "ошибка: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nзапустите без аргументов для вызова справки по параметрам"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "необязательный комментарий для помещения в .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "необязательный целевой файл для торрента"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - декодировать файлы метаданных %s"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Использование:%s [ТОРРЕНТ-ФАЙЛ [ТОРРЕНТ-ФАЙЛ ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "Файл метаданных: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "хэш: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "имя файла: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "размер файла:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "файлы:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "имя каталога: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "размер архива:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "URL трекера: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "узлы без трекеров:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "комментарий:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Пнд"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Втр"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Срд"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Чтв"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Птн"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Сбт"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Вск"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Янв"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Фев"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Мар"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Апр"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Май"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Июн"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Июл"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Авг"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Сен"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Окт"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Ноя"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Дек"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Сжато: %i Не сжато: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Невозможно постоянно сохранять опции: "
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "Ошибка чтения конфигурационного файла. Старый файл сохранён в \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Несоответствие конфигурационных параметров: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Вы должны закрыть %s и переустановить его. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Невозможно найти перевод для языка \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Файл %s принадлежит другому запущенному торренту"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Файл %s уже существует, но это необычный файл"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Короткое чтение - что-то обрезало файлы?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Неподдерживаемый формат файла fastresume, может быть от клиента другой версии?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Похоже, что другая программа переместила, переименовала или удалила, или, возможно, %s аварийно завершил работу при последнем запуске."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Похоже, что другая программа изменила файл, или, возможно, %s аварийно завершил работу при последнем запуске."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Похоже, что другая программа изменила размер файла, или, возможно, %s аварийно завершил работу при последнем запуске."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Невозможно прочесть данные fastresume: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "в подключении отказано"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr "Вы запрашивали повторное подключение. Жаль, я не могу сделать и этого."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever () нужно только однажды затребовать в реактор."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once () не мог бы возвратиться, пока нет деятельности, и не мог бы обработать то, что Вы хотите. Используйте listen_forever ()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "плохие данные в responsefile - total слишком мал"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "плохие данные в responsefile - total слишком велик"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "проверяется существующий файл"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 или информация fastresume не соответствуют состоянию файла (отсутствуют данные)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Плохая информация fastresume (файл содержит больше данных)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Плохая информация fastresume (недопустимое значение)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "на диске повреждены данные - может быть у вас запущены две копии?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"при запуске было сообщено, что файл завершён, но проверка хэша выдала сбой"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Невозможно установить обработчик сигнала: "
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "сброшен \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "добавлен \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "ожидается проверка хэша"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "загружается"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Повторное считывание конфигурационного файла"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Вы не можете указать имя файла .torrent, когда идёт одновременное создание нескольких торрентов"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Кодировка файловой системы \"%s\" не поддерживается в этой версии"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Невозможно преобразовать имя файла/каталога \"%s\" в utf-8 (%s). Либо не верна подразумеваемая кодировка файловой системы \"%s\", либо имя файла содержит недопустимые байты."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Имя файла/каталога \"%s\" содержит зарезервированные значения уникода, которые не соответствуют никаким символам."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Невозможно прочитать каталог "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Невозможно выполнить stat "
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "удаляется %s (будет повторно прочитан)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**предупреждение** %s является дубликатом торрента %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**предупреждение** %s содержит ошибки"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... успешно"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "удаляется %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "проверка выполнена"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Невозможно прочитать %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Невозможно загрузить или открыть \n%s\nПопробуйте воспользоваться веб-браузером, чтобы загрузить торрент-файл."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Нужен Python версии %s или выше"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+"Слишком поздно чтобы поменять RawServer серверный процесс, %s уже используется."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Опрос трекера ещё не закончен, с момента запуска опроса прошло %d секунд"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Проблема подключения к трекеру, сбой gethostbyname - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Проблема подключения к трекеру - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "плохие данные данные с трекера - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "отклонено трекером - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Раздача отменяется - она была отклонена трекером пока не было соединений с качающими."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Сообщение от трекера: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "предупреждение от трекера - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Поиск трекеров притерпел неудачу:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "неправильные метаданные - не является словарём"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "неправильные метаданные - плохие ключи частей"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "неправильные метаданные - недопустимый размер части"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "неправильные метаданные - неверное имя"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "имя %s запрещено по соображениям безопасности"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "смесь одного/нескольких файлов"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "неправильные метаданные - неверная длина"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "неправильные метаданные - \"files\" не является списком файлов"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "плохие метаданные - вход файла должен быть словарным"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "неправильные метаданные - неверный путь"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "неправильные метаданные - неверный путь каталога"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "путь %s запрещён по соображениям безопасности"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "неправильные метаданные - одинаковые пути"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "неправильные метаданные - имя используется и для файла, и для каталога"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "неправильные метаданные - неверный тип объекта"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "неправильные метаданные - не является строкой URL трекера"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "плохие метаданные - узел не в списке"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "плохие метаданные - список узлов должен содержать лишь два элемента"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "плохие метаданные - хост узла должен быть строкой"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "плохие метаданные - порт узла должен быть целым числом"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "причиной отказа должна быть строка"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "предупреждающее сообщение должно быть строкой"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"недопустимый вход в список пар - одноранговая информация должна быть словарной"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "недопустимый вход в список пар - одноранговый ip должен быть строкой"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"недопустимый вход в список пар - одноранговый порт должен быть целым числом"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "недопустимый вход в список пар - неверные данные"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "неверный список пар"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "неверный интервал опроса"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "неверный минимальный интервал опроса"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "неверный id трекера"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "неверное количество пар"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "неверное количество источников"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "неверный пункт \"last\""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Использование: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[ОПЦИИ] [КАТАЛОГ-ТОРРЕНТА]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Если присутствует аргумент без опции, он принимается в качестве значения\nопции torrent_dir.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[ОПЦИИ] [ТОРРЕНТ-ФАЙЛЫ]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[ОПЦИИ] [ТОРРЕНТ-ФАЙЛ]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[ОПЦИЯ] URL-ТРЕКЕРА ФАЙЛ [ФАЙЛ]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "аргументы - \n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (по умолчанию используется"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "неизвестный ключ"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "переданный параметр в конце не имеет значения"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "сбой распознавания командной строки на "
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Необходима опция %s."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Необходимо указать как минимум %d аргументов."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Слишком много аргументов - максимум %d."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "неверный формат %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Прослушиваемый порт."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "файл для сохранения информации о последнем загружающем"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "тайм-аут для закрытия подключений"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "секунд между сохранением dfile"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "секунд между обрывами загружающих"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "секунд, сколько должны ждать качающие перед повторным анонсом"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"число пар по умолчанию, чтобы послать информационное сообщение, если клиент не определяет число"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "время ожидания между проверками тайм-аутов подключений"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"сколько раз проверять, не находится ли загружающий за NAT'ом (0 = не проверять)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "добавлять ли результаты проверки NAT'а в журнал"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "минимальное время между глобальными чистками"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"минимальное время в секундах, после которого кэш считается устаревшим и очищается"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"разрешать загрузку только торрентов из этого каталога (и рекурсивно из подкаталогов самих торрент-файлов). Если параметр установлен, торренты в этом каталоге показываются на infopage/scrape, независимо от того, есть ли у них пары или нет"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"разрешить специальные клавиши в торрентах в allowed_dir, чтобы влиять на доступ к трекеру"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "открывать ли повторно файл журнала при получении сигнала HUP"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"показывать ли страницу с информацией при загрузке корневого каталога трекера"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "URL для перенаправления на страницу с информацией"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "показывать ли имена из разрешённого каталога"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"файл, содержащий данные x-icon, возвращаемый браузеру на запрос favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"игнорировать параметр GET ip от машин, которые не находятся в локальной сети (0 = никогда, 1 = всегда, 2 = игнорировать, если не включена проверка NAT). Заголовки HTTP-прокси, предоставляющие адрес оригинального клиента, рассматриваются как --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"файл для записи журнала трекера, используйте - для stdout (по умолчанию)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"используется с allowed_dir; добавляет url вида /file?hash={хэш}, который позволяет пользователям загрузить торрент-файл"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"сохранять мёртвые торренты после истечения срока их действия (т.е. они будут отображаться на вашем /scrape и веб-странице). Имеет смысл, только если не установлен allowed_dir"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "разрешён scrape-доступ (может быть none, specific или full)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "максимальное число пар, предоставляемых на любой запрос"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"ваш файл может существовать где-угодно во вселенной\nно, увы, не здесь\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**предупреждение** указанный файл favicon -- %s -- не существует."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr " **предупреждение** файл состояния %s повреждён; выполняется сброс"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Журнал начат:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"**предупреждение** невозможно перенаправить стандартный вывод в файл журнала:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Повторное открытие журнала:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr " **предупреждение** невозможно повторно открыть файл журнала"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "функция specific scrape недоступна на этом трекере."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "функция full scrape недоступна на этом трекере."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "функция get недоступна на этом трекере."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Запрошенная загрузка не разрешена для использования на этом трекере."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "запустите без аргументов для вызова справки по параметрам"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Завершение работы: "
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Невозможно запустить две отдельные копии одного и того же торрента"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Скрыть %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Показать %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "недопустимая закодированная строка"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+"неверное закодированное значение (данные следуют после верного префикса)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "значение maxport меньше, чем minport - нет портов для проверки"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Невозможно открыть порт прослушивания: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Невозможно открыть порт прослушивания: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Проверьте параметры своего диапазона портов."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Первоначальный запуск"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Невозможно загрузить данные для быстрого возобновления: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Будет выполнена полная проверка хэша."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "не удалось поверить хэш части %d, выполняется повторная загрузка"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Попытка загрузить торрент без трекера с помощью выключенного клиента без трекера."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "загрузка не удалась:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Ошибка ввода/вывода: На диске не осталось места, или невозможно создать файла больше, чем:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "убит ошибкой ввода/вывода:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "убит ошибкой ОС:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "убит внутренней ошибкой:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "При аварийном закрытии возникла дополнительная ошибка: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Невозможно удалить файл fastresume после сбоя:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "раздаётся"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Невозможно записать данные fastresume: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "завершение работы"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Похоже, что используется старая версия Python, которая не поддерживает определение кодировки файловой системы. Будет использоваться 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python не смог автоматически определить кодировку файловой системы. Будет использоваться 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Кодировка файловой системы '%s' не поддерживается. Будет использоваться 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Плохой компонент файлового пути: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Этот файл .torrent был создан плохой утилитой и содержит имена файлов в неверной кодировке. Может оказаться, что некоторые или все имена файлов будут отличаться от тех, что подразумевал создатель файла .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Этот файл .torrent был создан плохой утилитой и содержит неверные значения символов, которые не соответствуют каким-либо реальным символам. Может оказаться, что некоторые или все имена файлов будут отличаться от тех, что подразумевал создатель файла .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Этот файл .torrent был создан плохой утилитой и содержит имена файлов в неверной кодировке. Однако используемые имена могут быть корректными."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Набор символов, используемый в локальной файловой системе, (\"%s\") не может предоставить все символы, используемые в именах файлов этого торрента. Имена файлов были изменены относительно оригинальных."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Файловая система Windows не может обработать некоторые символы, используемые в имени (именах) файла из этого потока. Имена файлов были изменены."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Этот файл .torrent был создан плохой утилитой и содержит по крайней мере 1 файл или каталог с неверным именем. Однако т.к. все такие файлы были помечены как имеющие нулевую длину, они были просто проигнорированы."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Необработанная команда: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Невозможно создать управляющий сокет: уже используется"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Невозможно удалить файл старого управляющего сокета: "
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Невозможно создать управляющий сокет: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Невозможно отправить команду: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Глобальное взаимное исключение уже создано."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Нельзя найти открытый порт!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Нельзя создать каталог для данных к программе."
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Number of rows in translate mode"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "В прошлый раз BitTorrent не был корректно завершён. Продолжить?"
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Другой BT выполняется, но \"%s\" не существует \n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Я предположу порт."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Порт найден: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Невозможно найти порт."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Статус IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Сеанс связи динамического обмена данными начался."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "попытка нерегистрироваться или закрывать гнездо сервера провалена: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "потерян сокет сервера"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Ошибка обработки принятого подключения: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Вынужденный выход из-за срыва TCP-стека. Смотрите FAQ: %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "получен неизвестный тип сообщения"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "время вышло"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..b1963d8
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,2997 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-10 12:43-0800\n"
+"Last-Translator: patrik r <extinctsk@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Nainštalujte Python %s alebo novší."
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "zastaralé, nepoužívajte"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "Zlyhala komunikácia s iným %s procesom ale zdá sa že beží."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Zatvorenie všetkých okien %s by ten problém mohlo vyriešiť."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s je už aktívne"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Zlyhala komunikacia s iným %s procesom."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Je potrebné PyGTK %s alebo novšie."
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "ťahajte pre premiestnenie"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "kliknite pravým tlačidlom pre menu"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k alebo lepší"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k alebo lepší"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k alebo lepší"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Zadajte URL torrentu "
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Zadajte URL torrent súboru na otvorenie:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximálna uploadovacia rýchlosť"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Dočasne zastav všetky bežiace torrenty"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Pokračovať v sťahovaní"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Nová %s verzia dostupná"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Novšia verzia %s je dostupná.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Používate verziu %s a nová verzia je %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Najnovšiu verziu získate vždy z\n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Stiahnúť _neskôr"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Stiahnúť _teraz"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Pripomeň mi neskôr"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "O %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Verzia %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Nedá sa otvoriť %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Prispejte"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s log aktivity"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Uložiť log do:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "log uložený"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "obsah logu vyčistený"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s nastavenia"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Všeobecné"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Spustiť BitTorrent pri štarte Windows"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimalizovať do system tray"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Text progress baru je vždy čierny\n"
+"(vyžaduje reštart)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Ukladanie"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Uložiť nové súbory do:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Zmeniť..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Spýtať sa na miesto uloženia pri každom novom sťahovaní"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Sťahovanie"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Pri štarte nového torrentu:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "Za_staviť ostatné bežiace torrenty na vytvorenie miesta"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "Nezastavovať ostatné bežiace torrenty"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "Vždy sa spýt_ať"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seedovanie"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Seedovať dokončené torenty:až kým zdieľací pomer dosiahne [_] percent, alebo "
+"po dobu [_] minút, čo nastane skôr."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seedovať stále"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seedovať posledný dokončený torrent: kým zdieľací pomer dosiahne [_] percent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Sieť"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Hľadať voľný port:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "začínajúc portom:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "trackeru oznámiť túto IP adresu:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Nemá žiadny efekt pokiaľ nie ste na\n"
+" tej istej lokálnej sieti ako tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"UPOZORNENIE: Zmena týchto nastavení môže\n"
+" zabrániť %s v správnom fungovaní "
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Voľba"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Hodnota"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Rozšírené"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Vyberte primarny prečinok pre ukladanie downloadov"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Zlyhalo odoberanie odkazu: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Súbory v \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nikdy"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nesťahovať nikdy"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normálne"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Sťahovať normálne"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Prvé"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Sťahovať ako prvé"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Súbor"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Dĺžka"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Stiahnuť"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nikdy"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "prvé"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers pre \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adresa"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Pripojenie"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s down"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s up"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB stiahnutých"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB uploadovaných"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% hotové"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s odhadovaný peer download"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Potrebuje"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Priškrtený"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Potrestaný"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistický upload"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "vzdialený"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokálny"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "zlý peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d zle"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "banned"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info pre \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Meno torrentu:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent bez trackeru)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Oznamujúca adresa:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", v jednom súbore"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", v %d súboroch"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Celková veľkosť:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Častí:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Uložiť do:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Meno súboru:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Otvoriť adresár"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Zobraziť zoznam _súborov"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Odstráňiť torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Zrušiť torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", sa bude seedovat %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", sa bude seedovat do nekonecna."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Hotovo, pomer zdieľania: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Hotovo, %s uploadovaných"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Hotovo"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Zoznam súborov"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Zoznam _peerov"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Zmeňiť umiestnenie"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Seedovať donekonečna"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Re_štart"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Hotovo"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Odstráňiť"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Prerušiť"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Ste si istý, že chcete odstrániť \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Váš pomer zdieľania pre tento torrent je %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Uploadli ste %s do tohoto torrentu."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Odstrániť tento torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Dokončené"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "ťahajte do listu pre seedovanie"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Zlyhalo"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "ťahajte do listu pre pokračovanie"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Čakám"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pozastavené"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Aktívne"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Aktuálna up: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Aktuálna down: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Predchádzajúca up: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Predchádzajúca down: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Pomer zdieľania: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds. Celkovo z trackeru: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Distribuovane kópie: %d; Ďalšie: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Kúsky: %d celkovo, %d hotové, %d čiastočne, %d aktívne (%d prázdne)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d zlých kúskov + %s v zahodených požiadavkách"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% hotovo, %s zostáva"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Rýchlosť downloadu"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Rýchlosť uploadu"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s naštartovaných"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Koniec"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr "_Koniec"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Otvor torrent súbor"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Otvor torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Vytvor _nový torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pause/Play"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Ukáž/Skry _hotové torrenty"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Prispôsob okno aby sedelo"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Nastavenia"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Pomoc"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_O programe"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Prispejte"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Súbor"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Pohľad"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Hladaj torrenty"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(zastavené)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(viaceré)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Inštalátor %s sa už sťahuje"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Nainštalovať nový %s teraz?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Chcete teraz ukončiť %s a nainštalovať novú verziu, %s?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s pomoc je na \n"
+"%s\n"
+"Chceli by ste tam teraz ísť?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Ísť na web stránku s pomocou?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "V liste sa nachádza jeden dokončený torrent."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Chcete ho odstrániť?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "V zozname sa nachádza %d dokončených torrentov."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Chcete ich odstrániť všetky?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Odstrániť všetky dokončené torrenty?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Žiadne dokončené torrenty"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Nie sú tu žiadne dokončené torrenty na odstránenie."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Otvor torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Zmeň miesto ukladania pre"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Súbor už existuje!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" už existuje. Chcete vybrať iné meno?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Ulož miesto pre"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Zložka už existuje!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+"\"%s\" už existuje. Prajete si vytvoriť identický podpriečinok v danom "
+"priečinku?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globálna správa) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Chyba %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Vyskytlo sa viacero chýb. Kliknite na OK pre zobrazenie logu."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Zastaviť torrent?"
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+"Idete spustiť \"%s\". Chcete zastaviť ostatné ostatné bežiace torrenty?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Už ste prispeli?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Vitajte v novej verzii %s. Už ste prispeli?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Ďakujem!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+"Ďakujem za príspevok! Ak chcete prispieť znovu, vyberte \"Príspevok\" z menu "
+"\"Pomoc\"."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Nieje možné spustiť TorrentQueue, skontrolujte možné chyby"
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s tvorca torrent súboru %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Vytvor torrent pre tento súbor/adresár:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Vyber..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Z adresárov budú batch torrenty)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Veľkosť kúsku:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Použi _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Použi _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Uzly (nepovinné):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komentáre:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Urob"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Host"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Vytváraju sa torrenty..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Kontrolujú sa veľkostí súborov..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Začať seedovanie"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "vytvára sa"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Dokončené."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Dokončené vytváranie torrentov."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Chyba!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Chyba vo vytváraní torrentov"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s alebo novšie je potrebné"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dní"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 deň %d hodín"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d hodín"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minút"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekúnd"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekúnd"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s pomoc"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Často kladené otázky:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Choď"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Vyberte si existujúci adresár..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "všetky súbory"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "torrenty"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "vytvor nový adresár"
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "vyber súbor"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "vyber adresár"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Nepodarilo sa načítať uložený stav:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Nepodarilo sa uložiť stav UI:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Chybný obsah stavového súboru"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Chyba pri čítaní súboru \"%s\""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "nepodarilo sa obnoviť stav úplne"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Chybný stavový súbor (duplicitné záznamy)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Chybne data v \"%s\", nemoze obnovit torrent"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(chyba infohash)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Chybný stavový súbor (zlý záznam)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Chybný stavový súbor UI"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Chybná verzia stavového súboru UI"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "Nepodporovaná verzia stavového súboru UI (z novšieho klienta?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Nepodarilo sa zmazať cacheovaný %s súbor:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Toto nie je platný torrent súbor. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Tento torrent (alebo torrent s rovnakým obsahom) je už aktívny."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Tento torrent (alebo torrent s rovnakým obsahom) už čaká vo fronte."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent v neznámom stave %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Nepodarilo sa zapísať súbor"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrent nebude reštartovaný korektne pri reštarte klienta"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+"Nemožno mať aktívnych viac ako %d torrentov naraz. Pre viac informácií si "
+"prečítajteFAQ na %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+"Neštartujem torrent, vo fronte už sú iné torenty a tento už splnil podmienky "
+"pre ukončenie seedovania."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+"Neštartujem torrent, pretože už splnil podmienky pre ukončenie seedovania."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Nepodarilo sa získať najnovšiu verziu z %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Nepodarilo sa prečítať reťazec novej verzie z %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Nepodarilo sa nájsť žiadne vhodné dočasné umiestnenie pre inštalátor %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Pre inštalátor %s %s nie je dostupný žiaden torrent súbor."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "Inštalátor %s %s sa zdá byť nekompletný, chýbajúci alebo pokazený."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Inštalátor sa nedá spustiť na tomto operačnom systéme."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "ziadne torrenty"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Spúštanie sťahovania"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Beží normálne"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+"Sťahovanie môže byť pomalé:\n"
+"Pravdepodobne firewall/NAT "
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kontrola sieťového pripojenia"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+"adresár, v ktorom sú uložené dáta s premennými ako napr. fastresume a GUI. "
+"Defaultne je to podadresár 'data' v bittorent config adresári."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"kódovanie znakov v lokálnom súborovom systéme. Pre autodetekciu ponechajte "
+"prázdne. Autodetekcia nefunguje so staršou verziou pythonu ako 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO kód jazyku ktorý sa má používať"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+"ip, ktorá sa bude ohlasovať trackeru (nemá žiadny účinok, pokiaľ nie ste na "
+"rovnakej lokálnej sieti ako tracker)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+"port viditeľný z internetu, ak sa odlišuje od toho, na ktorom klient počúva "
+"lokálne"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "minimálny port na ktorom počúvat, zvyšuje sa ak je nedostupný"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "maximálny port na ktorom počúvať"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "lokálna ip na ktorej počúvať"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekúnd medzi obnovovanim zobrazovaných informácií"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minút čakať medzi vyžiadaním viac peerov"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimálny počet peerov, kedy nežiadať o ďalších"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "počet peerov pri ktorom už nežiadať o nové spojenia"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "maximálny počet odchádzajúcich nekompletných spojení"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+"maximálny počet spojení, po dosiahnutí tohoto čísla budú všetky nové "
+"prichádzajúce spojenia zatvárané"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "či kontrolovať kontrolné súčty na disku"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximálna rýchlosť uploadu, 0 - bez limitu"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "počet uploadov pre naplnenie extra optimistickými unchoke-mi"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"maximálny počet súborov otvorených vo viacsúborových torrentoch, 0 - bez "
+"limitu. Používa sa k predídeniu nedostatku súborových deskriptorov."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+"Inicializuj clienta bez trackerov. Toto musi byt povolene aby ste mohli "
+"stahovat torrenty bez trackerov."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "počet sekúnd medzi posielaním keepalive paketov"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "aký počet bajtov načítať počas jednej požiadavky."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+"maximálna dĺžka prefixového kódovania, ktorú akceptujete - vyššie hodnoty "
+"vyústia do prerušenia spojenia."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "počet sekúnd do zatvorenia socketov z ktorých neprišli žiadne dáta"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"počet sekúnd medzi kontrolami, či niektorým spojeniam nevypršal časový limit"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+"maximálna dĺžka kúsku, ktorý pošleme peerovi; ukončíme spojenie, ak príde "
+"požiadavka na väčší"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+"maximálny časový interval, na ktorom odhadujeme rýchlosti uploadu a downloadu"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "maximálny časový interval, na ktorom odhadujeme seedovací pomer"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "maximálny čas čakania medzi skúšaním ohlasovaní ak zlyhávaju"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+"sekúnd čakať na dáta, ktoré pridu cez spojenie, pred usúdením, že je semi-"
+"permanentne priškrtená"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"počet downloadov pri ktorých zmeniť metódu z \"random\" (náhodný) na "
+"\"rarest first\" (najvzácnejší prvý)"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "koľko bajtov zapisovať do sieťových bufferov naraz."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+"odmietnuť ďalšie spojenia od adries s pokazenými alebo zámerne "
+"nepriateľskými peermi, ktorí posielajú nesprávne dáta"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "nepripájať sa na viac peerov s tou istou IP adresou"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"ak je táto hodnota nenulová, nastaviť TOS pre spojenia s peermi na túto "
+"hodnotu"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"povoliť obchádzanie chyby v BSD libc, ktorá veľmi spomaľuje čítanie súborov."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "adresa HTTP proxy servera pre použitie na spojenie s trackerom"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "ukončiť spojenia s RST a zabrániť stavu TCP TIME_WAIT"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Použi združené sieťové knižnice pre sieťové pripojenie. 1 znamená použiť "
+"združené knižnice, 0 znamená nepoužiť združené knižnice, -1 znamená "
+"autodetekovať, a uprednostniť združené knižnice"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"meno súboru (pre jednosúborové torrenty) alebo adresár (pre skupinu "
+"torrentov) do ktorého uložiť torrent ako, prednastavené meno torrentu.Pozri "
+"tiež--save_in, ak nie je uvedené ani jedno, spýtať sa používateľa na "
+"umiestnenie"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "zobraziť rozhranie pre pokročilých užívateľov"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+"najväčší počet minút seedovania dokončeného torrentu pred zastavením "
+"seedovania"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+"minimálny pomer upload/download, v %, ktorý treba dosiahnuť na zastavenie "
+"seedovania. 0 - bez limitu."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+"minimálny pomer upload/download, v %, ktorý treba dosiahnuť na zastavenie "
+"seedovania posledného torrentu. 0 - bez limitu."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seedovať každý dokončený torrent nekonečne dlho (až kým ho používateľ "
+"nezruší)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seedovať posledný dokončený torrent nekonečne dlho (až kým ho používateľ "
+"nezruší)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "štartovať downloader v pozastavenom stave"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+"špecifikuje ako sa ma aplikácia chovať ked sa používateľ snaží spustiť nový "
+"torrent: \"nahraď\" znamená vždy nahradiť bežiaci torrent novým, \"pridať\" "
+"znamená že sa pridá k už spusteným torrentom pararelne a \"spýtať sa\" "
+"znamená že sa program vždy spýta čo má robiť."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Spustiť BitTorrent minimalizovaný"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+"mano súboru (pre jednosúborové torrenty) alebo meno adresára (pre skupinu "
+"torrentov) pre uloženie torrentu,pomocou prednastaveného mena torrentu. "
+"Pozri taktiež --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+"Maximum súčastne bežiacich uploadov. -1 znamená (dúfajme) primeraný počet "
+"uploadov založený na --max_upload_rate.Automatické hodnoty sú účinné len "
+"vtedy keď máte spustený iba jeden torrent."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+"miestny adresár kde bude uložený obsah torrentu. Súbor (jednosúborové "
+"torrenty) alebo adresár (skupina torrentov) bude vytvoreny v tomto "
+"umiestnení použitím predvoleného mena napísaného v .torrent súbore. Pozri "
+"tiež -- save_as"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "pýtať sa alebo nepýtať na umiestnenie stiahnutých súborov "
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+"miestny adresár kde budú uložené torrenty, použitím mena zisteného v--"
+"saveas_style. Ak je ponechaný volný jednotlivý torrent bude uložený pod "
+"adresár príslušného .torrent súboru"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "ako často sa má skenovať priečinok s torrentmi, v sekundách."
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+"Ako nazvať torrent downloads: 1:použiť meno torrent súboru (minus .torrent);"
+"použiť meno zakódované v torrent súbore;3:vytvoriť adresár z mena torrent "
+"súboru(minus .torrent)a uložiť ho v tomto adresári použitím mena "
+"zakódovaného v torrent súbore;4:ak meno torrent súboru(minus .torrent) a "
+"meno zakódované v torrent súbore sú rovnaké, použi toto meno(názvom 1/2),"
+"alebo vytvor pomocný adresár podla bodu 3;UPOZORNENIE:možnosti 1 a 2 majú "
+"schopnosť prepísať súbory bez varovania a môžu vyvolať bezpečnostné otázky."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "Zobrazovať plnú cestu alebo obsah torrentu pre každý torrent."
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "adresár kde hľadať .torrent súbory (polo-rekruzívne)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "zobrazovať kontrolné informácie do stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "štandardný názov trackeru"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+"ak spadne urobiť stopovací torrent,namiesto predpovedanej URL,použiť "
+"spolahlivý uzol v tvare <ip>:<port> alebo prázdny reťazec na načítanie uzlov "
+"z vašej smerovacej tabulky"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "sťahovanie ukončené!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<neznáme>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "dokončenie za %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "sťahovanie úspešné"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d distribuovanych kopii (dalsia: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d doteraz videný"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "CHYBA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "ukladanie:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "veľkosť súboru:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "percent dokončených:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "zostávajúci čas:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "stiahnuť do:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "rýchlosť sťahovania:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "rýchlosť odosielania:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "odhad zdielania:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "stav rýchlosti:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stav zdielania:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Nemôžete špecifikovať oboje --save_as a --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "vypínam"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "CHYBA pri načítaní konfiguračného súboru:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "CHYBA pri načítaní .torrent súboru:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "musíte určiť .torrent súbor"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Spustenie textového módu GUI zlyhalo, nemožno pokračovať."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+"Toto prostredie potrebuje štandardný Python modul \"curses\", ktorý však "
+"naneštastie nie je dostupný pre natívny Windows port Pythonu. Avšak je "
+"dostupný v Cygwin porte Pythonu na všetkých Win32 systémoch (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Ešte stále možte použit \"bittorrent-panel\" na stiahnutie."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "súbor:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "veľkosť:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "cieľ:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "priebeh:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "stav:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "rýchlosť sťahovania:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "rýchlosť odosielania:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "zdielanie:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "pôvod:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peerovia:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "chyby:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "chyba:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "#IP odoslané stiahnuté dokončené rýchlosť"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "stahujete %d častí,máte %d fragmentov,%d z %d častí dokončených"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Tieto chyby sa vyskytli počas realizácie:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Použitie: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "staré oznámenia pre %s:%s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "žiadne torrenty"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTÉMOVÁ CHYBA - NÁMIETKA VYGENEROVANÁ"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Pozor:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "nie je adresár"
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+"chyba: %s\n"
+" spustiť bez argumentov pre parametrické vysvetlenie"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+"\n"
+" VÝNIMKA:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Môžete stále využiť \"btdownloadheadless.py\" pre stiahnutie."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "pripajanie k peerom"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Veľkosť"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Odoslať"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Súhrn:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s peerov %s seedov %s distribuovanych kopii - %s dn %s up"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "chyba:"
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+"\n"
+" spustiť bez argumentov pre parametrické vyjadrenie"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "voliteľná možnosť vložiť čitateľnú poznámku v .torrent súbore"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "voliteľný cieľový súbor pre torrent"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dekódovať %s metainfo súbory"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "využívanie: %s [TORRENTFILE[TORRENTFILE ... ]]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo súbor: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "názov súboru: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "veľkosť súboru:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "súbory:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "názov adresára: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "veľkosť archívu:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "oznamovacia url: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "komentár:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Po"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Ut"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "St"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Št"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Pi"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "So"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Ne"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Máj"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jún"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Júl"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Komprimované: %i Nekomprimované: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Nedá sa permanentne uložiť možnosti:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Chyba pri čítaní konfiguračného súboru. Stará konfigurácia uložená v \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Musíte ukončiť a preinštalovať %s. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Nepodarilo sa nájsť preklad pre jazyk \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Súbor %s patrí inému bežiacemu torrentu"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Súbor %s už existuje, ale nie je to bežný súbor"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "Kontrolujem existujuci subor"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "pridane \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "stahujem"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Nepodarilo sa citat %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+"Nepodarilo sa stiahnut/otvorit\n"
+"%s\n"
+"Skuste pouzit web browser na stiahnutie torrent suboru."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Toto sa zdá byť stará verzia Python ktorá nepodporuje detekciu zakódovaného "
+"súboru.Predpokladanie ´ascii´"
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python zlyhal pri autodetekcii zakódovaného súboru.Namiesto použitia ´ascii´"
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Kódovanie súboru ´%s´ nieje podporované.Namiesto použitia ´ascii´"
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Zlá ceta k súborovej zložke:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+"Tento .torrent súbor bol vytvorený poškodeným nástrojom a nesprávne "
+"zakódoval mená súborov.Časť alebo všetky mená súborov sa možu líšiť od "
+"pôvodných názvov ktoré im dal tvorca .torrent súboru. "
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Súborový systému Windos nedokáže spracovať niektoré znaky použité v názvoch "
+"súborov. Názvy súborov boli zmenené."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..4851c5f
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,2825 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-27 11:48+0100\n"
+"Last-Translator: Slovenian <denisn@logrus.ru>\n"
+"Language-Team: Slovenian <lugos-slo (at) lugos (dot) si>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Namestite Python %s ali novejšo različico"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "neodobreno, ne uporabljajte"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Komunikacija z drugim postopkom %s ni uspela, vendar se eden že izvaja."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "To težavo lahko odpravi zaprtje vseh oken %s."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s se že izvaja"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Komunikacija z drugim postopkom %s ni uspela."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Obvezen je PyGTK %s ali novejši"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "povleci za razvrščanje"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "desni klik za meni"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "klicni dostop"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "Kabel/DSL 128k gor"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "Kabel/DSL 256k gor"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k gor"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Vnesite povezavo do torrent datoteke"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Vnesite URL povezavo do torrent datoteke za odpiranje:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Največja hitrost pošiljanja:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Začasno ustavi vse delujoče torrente"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Nadaljuj prenašanje"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Na voljo je nova različica %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Na voljo je novejša različica %s.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Uporabljate različico %s, na voljo je različica %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Najnovejšo različico lahko vedno dobite na\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Prenesi _pozneje"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Prenesi _zdaj"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Opomni me pozneje"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "O %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Različica %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s ni bilo mogoče odpreti"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Vaš prispevek"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Dnevnik dejavnosti za %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Shrani dnevnik v:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "dnevnik shranjen"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "dnevnik izpraznjen"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Nastavitve za %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Splošno"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Ob zagonu programa Windows zaženi BitTorrent"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimiraj v sistemsko vrstico"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Besedilo o prikazu napredka je vedno črno\n (potreben ponovni zagon)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Shranjevanje"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Shrani prenesene datoteke v:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Spremeni..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Vprašaj, kam naj se shrani vsak nov prenos"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Prenašanje"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Ob zagonu novega torrenta:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Za sprostitev prostora zaustavi drug delujoči torrent"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Ne zaustavi drugih delujočih torrentov"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Vedno vprašaj"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Sejanje"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Sej zaključene torrente: dokler razmerje izmenjave ne doseže [_] odstotkov ali vsaj [_] minut – kar koli se zgodi prej."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Sej za nedoločen čas"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Sej nazadnje zaključen torrent: dokler razmerje izmenjave ne doseže [_] odstotkov."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Omrežje"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Najdi razpoložljiva vrata:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "začni z vrati: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Omogoči samodejno preslikavo vrat"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Sledilniku sporoči ta IP:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Učinkuje samo, če ste v istem krajevnem\n omrežju kot sledilnik)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"OPOZORILO: Spreminjanje teh nastavitev lahko\npovzroči nepravilno delovanje programa %s."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Možnost"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Vrednost"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Napredno"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Izbor privzete mape za prenose"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Odstranitev bližnjice ni uspela: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Datoteke v »%s«"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Nikoli"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Nikoli ne prenesi"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Navadno"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Prenesi navadno"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Najprej"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Prenesi najprej"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Ime datoteke"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Velikost"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Prenos"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "nikoli"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "najprej"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Vrstniki za »%s«"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP naslov"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Odjemalec"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Povezava"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s dol"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s gor"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB dol"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB gor"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% dokončano"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "Približen vrstnikov sprejem (KB/s)"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID vrstnika"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Zanimanje"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Zamašeno"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Zavrnjeno"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistično pošiljanje"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "oddaljeno"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "krajevno"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "slab vrstnik"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d v redu"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d slabo"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "izobčen"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "v redu"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Podatki za »%s«"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Ime torrenta:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent brez sledilnika)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "URL objave:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", v eni datoteki"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", v %d datotekah"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Skupna velikost:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Delcev:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Izvleček:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Shrani v:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Ime datoteke:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Odpri mapo"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Prikaži seznam _datotek"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Podatki o torrentu"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Odstrani torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Prekliči torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", sejanje še %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", sejanje za nedoločen čas."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Zaključeno, razmerje izmenjave: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Zaključeno, poslano %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Zaključeno"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Podatki o torrentu"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Seznam _datotek"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "Seznam _vrstnikov"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Spremeni mesto"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "Sej za _nedoločen čas"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Ponovni _zagon"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Zaključi"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "Ods_trani"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "P_rekliči"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Ste prepričani, da želite odstraniti »%s«?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Razmerje izmenjave za ta torrent je %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Poslali ste %s tega torrenta. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Odstranim ta torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Zaključeno"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "povlecite na seznam za sejanje"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Ni uspelo"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "povlecite na seznam za nadaljevanje"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Čakanje"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Ustavljeno"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Prenašanje"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Trenutno gor: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Trenutno dol: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Prej gor: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Prej dol: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Razmerje izmenjave: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s vrstnikov, %s semen. Skupno: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Porazdeljenih kopij: %d. Naslednje: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Delcev: %d skupno, %d zaključenih, %d delnih, %d dejavnih (%d praznih)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d slabih delcev + %s v zavrženih zahtevkih"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% zaključeno, %s do konca"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Hitrost prenosa"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Hitrost pošiljanja"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "–"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s zagnan"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Končaj"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "Iz_hod"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Odpri torrent datoteko"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Odpri _URL do torrenta"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "_Ustvari nov torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Zaustavi/nadaljuj"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "_Prikaži/skrij zaključene torrente"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "_Velikost okna prilagodi vsebini"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Dnevnik"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Nastavitve"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Pomoč"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_O"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "P_rispevek"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Datoteka"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Pogl_ed"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Iskanje torrentov"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(ustavljeno)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(več)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Namestitev za %s se že prenaša"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Naj zdaj namestim novi %s?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Želite zdaj zapreti %s in namestiti novo različico %s?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Pomoč za %s je na spletni strani \n%s\nJo želite obiskati?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Želite obiskati spletno stran s pomočjo?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Na seznamu je en zaključen torrent. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Ga želite odstraniti?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Na seznamu je %d zaključenih torrentov. "
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Jih želite odstraniti?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Želite odstraniti vse zaključene torrente?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Ni zaključenih torrentov"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Za odstranitev ni na voljo nobenega zaključenega torrenta."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Odpri torrent"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Spremeni lokacijo za shranjevanje za"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Datoteka obstaja!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "»%s« že obstaja. Želite izbrati drugačno ime datoteke?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Lokacija za "
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Mapa obstaja!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"»%s« že obstaja. Ali nameravate v obstoječi mapi ustvariti identično, podvojeno mapo?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globalno sporočilo) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Napaka %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Prišlo je do več napak. Kliknite »V redu« za ogled dnevnika z napakami."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Naj zaustavim torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Zagnali boste \"%s\". Ali želite zaustaviti tudi drug deluljoči torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Ste že prispevali?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Dobrodošli v novi različici programa %s. Ste že prispevali?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Hvala!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Hvala za prispevek! Za ponovno prispevanje v meniju »Pomoč« izberite »Prispevek«."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+"Čakalne vrste za torrent (TorrentQueue) ni mogoče zagnati, zgoraj lahko vidite napake."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s ustvarjalec torrentov %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Ustvari torrent za to datoteko/mapo:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Izberi ..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Mape bodo postale paketni torrenti)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Velikost delca:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Uporabi _sledilnik:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Uporabi D_HT"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Vozlišča (ni obvezno):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Komentar:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Naredi"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Gostitelj"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Vrata"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Ustvarjanje torrentov..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Preverjanje velikosti datotek ..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Prični sejati"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "ustvarjanje "
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Zaključeno."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Ustvarjanje torrentov je zaključeno."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Napaka!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Napaka pri ustvarjanju torrentov: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Obvezen je GTK %s ali novejša različica"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dni"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dan %d ur"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d %02d ur"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minut"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekund"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekund"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Pomoč za %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Pogosta vprašanja:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Pojdi"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Izberi obstoječo mapo..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Vse datoteke"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrenti"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Ustvari novo mapo..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Izberite datoteko"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Izberite mapo"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Shranjenega stanja ni mogoče naložiti:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Stanja uporabniškega vmesnika ni mogoče shraniti:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "vsebina datoteke s stanjem ni veljavna"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Napaka pri branju datoteke \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "stanja ni mogoče povsem obnoviti"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Neveljavna datoteka s stanjem (podvojen vnos)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Poškodovani podatki v \"%s\". Torrenta ni mogoče obnoviti."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(neujemanje povzetka)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Neveljavna datoteka s stanjem (napačen vnos)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Napačna datoteka s stanjem uporabniškega vmesnika"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Napačna različica datoteke s stanjem uporabniškega vmesnika"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Nepodprta različica datoteke s stanjem uporabniškega vmesnika (od novejše različice odjemalca?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Datoteke %s, ki je v predpomnilniku, ni mogoče izbrisati:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "To ni veljavna torrent datoteka. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Ta torrent (ali nek drug z enako vsebino) se že prenaša."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Ta torrent (ali nek drug z enako vsebino) že čaka v vrsti."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent v neznanem stanju %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Datoteke ni mogoče zapisati"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "po ponovnem zagonu odjemalca torrent ne bo pravilno zagnan"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Istočasno se ne more izvajati več kot %d torrentov. Več o tem si oglejte na %s."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrent ne bo zagnan, ker na zagon čakajo drugi torrenti. Ta torrent pa že ustreza nastavitvam za zaustavitev sejanja."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Torrent ne bo zagnan, ker ta torrent že ustreza nastavitvam za zaustavitev sejanja."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Ni mogoče dobiti najnovejše različice od %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Ni mogoče razčleniti niza z novo različico od %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Ni mogoče najti ustreznega začasnega prostora za shranitev namestitve za %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Ni mogoče najti datoteke torrent za namestitev za %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "Namestitveni program %s %s je nedokončan, manjka ali je poškodovan."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "V tem operacijskem sistemu ni moč zagnati namestitve"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Brez torrentov"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Začetek prenašanja"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normalno delovanje"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "Prenašanje je mogoče počasno:\nVerjetno je za požarnim zidom/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Preveri omrežno povezavo"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"mapa, v kateri so shranjeni spremenljivi podatki, npr. o hitrem nadaljevanju in stanju uporabniškega vmesnika. Privzeto podmapa »data« v mapi z nastavitvami za BitTorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"kodiranje znakov, ki je v uporabi v krajevnem datotečnem sistemu. Če je prazno, je zaznava samodejna (potreben Python 2.3 ali novejši)."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO koda jezika, ki naj se uporabi"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"IP za prijavo sledilniku (nima učinka, če niste v istem krajevnem omrežju kot sledilnik)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"globalno prikazana številka vrat, če se razlikuje od vrat, s katerimi je odjemalec povezan krajevno"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "najmanjša št. vrat za povezavo, če je nedosegljiva, se poveča"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "največja št. vrat za povezavo"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "IP za lokalno povezavo"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekund med posodobitvijo prikazanih informacij"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minut za čakanje, pred zahtevanjem več vrstnikov"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "najmanjše število vrstnikov, brez ponavljanja zahteve"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+"število vrstnikov, pri katerih naj se ustavi vzpostavljanje novih povezav"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "največje število odhodnih nedokončanih povezav"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"največje število dovoljenih povezav, ostale prihajajoče povezave bodo takoj prekinjene"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "preverjanje izvlečkov (hash) na disku"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+"najvišja možna hitrost pošiljanja podatkov (v kB/s), 0 pomeni brez omejitve"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+"število poslanih datotek za zapolnitev z zelo optimističnimi odmašenimi datotekami"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"največje število datotek v torrentu z več datotekami, ki naj bodo odprte istočasno, 0 pomeni brez omejitev. S tem lahko preprečite, da zmanjka datotečnih deskriptorjev"
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Inicializiraj odjemalca brez sledilnika. To mora biti omogočeno, če želite prenesti torrente brez sledilnika."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"število sekund za zaustavitev med pošiljanjem datotek, ki jih želite obdržati aktivne"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "za koliko bajtov naj se poizveduje v vsaki zahtevi."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"kodiranje najdaljše dolžine predpone, ki ga boste sprejeli prek povezave - višje vrednosti prekinejo povezavo."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"sekund za čakanje med zapiranjem vtičnic, prek katerih nisem prejel ničesar"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"sekund za čakanje med preverjanjem, če je časovna omejitev katere koli povezave potekla"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"največja velikost kosa za pošiljanje vrstnikom, zapri povezavo, če prejmeš večjo zahtevo"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"najdaljše časovno obdobje, po katerem oceni trenutne hitrosti pošiljanja in prenosa"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "najdaljše časovno obdobje, po katerem oceni trenutno hitrost sejanja"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"najdaljši čas za čakanje med ponovnim poskušanjem objav, če ne uspevajo"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"sekund za čakanje, da podatki pridejo prek povezave, preden velja, da je na pol trajno zamašeno"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"število prenosov, pri katerem preklopi iz naključnega v najprej najmanj pogosti"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "koliko bajtov naj se naenkrat zapiše v omrežni medpomnilnik."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"zavrni nadaljnje povezave z naslovov s prekinjenimi ali namerno škodljivimi vrstniki, ki pošiljajo nepravilne podatke"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "ne povezuj se z več vrstniki, ki imajo isti naslov IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "če ni nič, nastavi možnost TOS za povezave z vrstniki na to vrednost"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"omogoči metodo, ki obide hrošča v knjižnici BSD libc, ki naredi branje datotek zelo počasno."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "naslov HTTP proxyja za povezavo do sledilnika"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "zapri povezave z RST in se izogibaj stanja TCP TIME_WAIT (čakalni_čas)"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Za omrežne povezave uporabi Zavite omrežne knjižnice. 1 pomeni uporabo zavitih, 0 pomeni, naj se ne uporabljajo zavite, -1 pomeni samodejno zaznavanje in dajanje prednosti zavitim"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"ime datoteke (za torrente z eno datoteko) ali ime mape (za paketne torrente), kakor naj se shrani torrent, s čimer se prepiše privzeto ime v torrentu. Oglejte si tudi --save_in (shrani_v), če nič od tega ni določenega, bo uporabnik vprašan za mesto shranjevanja"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "prikaži napredni uporabniški vmesnik"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"največje število minut za sejanje dokončanega torrenta, preden se zaustavi"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"najmanjše razmerje pošiljanja/prenosa v odstotkih, ki naj se doseže, preden se sejanje zaustavi. 0 pomeni brez omejitve."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"najmanjše razmerje pošiljanja/prenosa v odstotkih, ki naj se doseže, preden se sejanje zadnjega torrenta zaustavi. 0 pomeni brez omejitev."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "Sej vsak dokončan torrent za nedoločen čas (do preklica)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Sej zadnji torrent za nedoločen čas (do preklica)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "prenašanje zaženi v zaustavljenem stanju"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"določa, kako naj se aplikacija obnaša, ko uporabnik poskuša ročno zagnati drug torrent: »zamenjaj« pomeni, da se delujoči torrent vedno zamenja z novim, »dodaj« pomeni, da se delujoči torrent vedno doda vzporedno, »vprašaj« pa pomeni, da je treba uporabnika vsakič vprašati"
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "BitTorrent zaženi minimiran"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"razveljavi različico, dobljeno iz preverjanja različice http, in omogoči način za odpravljanje napak pri preverjanju različice"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"razveljavi trenutno različico, ki se uporablja v preverjanju različice, in omogoči način za odpravljanje napak pri preverjanju različice"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "določi velikost in položaj okna v obliki: ŠIRINAxVIŠINA+XZAMIK+YZAMIK"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"ime datoteke (za torrente z eno datoteko) ali ime mape (za paketne torrente), kakor naj se shrani torrent, s čimer se prepiše privzeto ime v torrentu. Oglejte si tudi --save_in (shrani_v)"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"največje število datotek, ki se lahko pošiljajo hkrati. -1 pomeni (pričakovano) sprejemljivo število, ki temelji na --max_upload_rate (največja_hitrost_pošiljanja). Samodejne vrednosti so občutne samo, ko naenkrat deluje samo en torrent."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"krajevna mapa, kamor bo shranjena vsebina torrenta. V tej mapi bo ustvarjena datoteka (torrenti z eno datoteko) ali mapa (paketni torrenti) s privzetim imenom, ki je določeno v .torrent datoteki. Oglejte si tudi -- save_as (shrani_kot)."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "naj vprašam, kam želite shraniti prenose"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"krajevna mapa, kamor bodo shranjeni torrenti z imenom, ki jih določa --saveas_style (stil_shranjevanja_kot). Če to ostane prazno, bo vsak torrent shranjen v mapo ustrezne .torrent datoteke"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "kako pogosto (v sekundah) naj pregledam torrent mapo"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"pred zagonom zaznanega torrenta počakaj toliko sekund, da se izogneš tekmi s sledilnikom"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Kako poimenovati prenose torrentov: 1: uporabi ime torrent datoteke (brez .torrent); 2: uporabi ime, ki je zakodirano v torrent datoteki; 3: ustvari mapo z imenom torrent datoteke (brez .torrent) in v to mapo shrani z imenom, ki je zakodirano v torrent datoteki; 4: če sta ime torrent datoteke (brez .torrent) in ime, ki je zakodirano v torrent datoteki, enaka, uporabi to ime (slog 1/2), drugače pa ustvari vmesno mapo kot v slogu 3; POZOR: možnosti 1 in 2 lahko datoteke prepišeta brez opozorila in predstavljata varnostno tveganje."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "ali naj se prikaže celotna pot ali vsebina torrenta za vsak torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "mapa kjer naj iščem .torrent datoteke (pol-rekurzivno)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "ali naj se prikažejo diagnostični podatki na standardnem izhodu"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "za katero od dveh sil naj nastavim velikost delca"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "privzeto ime sledilnika"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"če je napačno, ustvari torrent brez sledilnika, namesto URL-ja objave pa uporabi zanesljivo vozlišče v obliki <ip>:<vrata> oziroma prazen niz za pridobitev nekaterih vozlišč iz usmerjevalne tabele"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "prenos končan!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<neznano>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "končano bo čez: %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "prenos uspel"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB poslanih / %.1f MB prejetih)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB poslanih / %.1f MB prejetih)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d videnih zdaj"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "NAPAKA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "shranjujem:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "velikost datoteke:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "odstotkov končano:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "čas do konca:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "shrani v:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "hitrost prenosa:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "hitrost pošiljanja:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "stanje sejanja:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "stanje vrstnikov:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Ne morete istočasno določiti --save_as in --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "ustavljanje"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Napaka pri branju konfiguracijske datoteke:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Napaka pri branju .torrent datoteke:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "predložiti morate .torrent atoteko"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "datoteka:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "velikost:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "cilj:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "napredek:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "stanje:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "hitrost prenosa:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "hitrost pošiljanja:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "delite:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "sejalnikov:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "vrstnikov:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d videnih, dodatno %d distribuiranih kopij(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "napaka(e):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "napaka:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Pošiljanje Sprejemanje Končano Hitrost"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "prenašam %d delcev, imam %d fragmentov, %d od %d delcev končanih"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Napake ki so se dogodile med izvajanjem:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uporaba: %s URL_SLEDILNIKA [TORRENT [TORRENT ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "stara objava za %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "ni torrentov"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "opozorilo:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "ni mapa"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "Še vedno lahko uporabite \"btdownloadheadless.py\" za prenos."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Ocena prihoda v %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Velikost"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Pošlji"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Skupaj:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "napaka:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "vstavi berljiv komentar v .torrent, po izbiri"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dekodira datoteke z metapodatki za %s"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Uporaba: %s [TORRENT [TORRENT ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "datoteka z metapodatki: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "izvleček: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "ime datoteke: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "velikost datoteke:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "datoteke: "
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "ime mape: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "velikost arhiva:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "URL objave: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "komentar:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Pon"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Tor"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Sre"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Čet"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Pet"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Sob"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Ned"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Maj"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Avg"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Stisnjeno: %i Razširjeno: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Nastavitve ne bodo ostale shranjene:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Datoteka %s pripada drugemu torrentu, ki že teče"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Datoteka %s že obstaja, a ni pravilna datoteka"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Kratko branje - so bile datoteke obrezane?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Nepodprta oblika datoteke za hitro nadaljevanje. Mogoče je iz druge različice odjemalca?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Ni moč prebrati podatkov za hitro nadaljevanje: "
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "napačni podatki v datoteki z odgovorom - celota premajhna"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "napačni podatki v datoteki z odgovorom - celota prevelika"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "preverjanje obstoječe datoteke"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashes 0 ali pa se podatki za hitro nadaljevanje ne ujemajo s stanjem datoteke (manjkajoči podatki)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Napačni podatki za hitro nadaljevanje (datoteke vsebujejo več podatkov)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Napačni podatki za hitro nadaljevanje (napačna vrednost)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "podatki na disku so pokvarjeni - mogoče tečeta dve kopiji?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"ob zagonu je bila datoteka zaključena, a je preverjanje izvlečka spodletelo"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "odvržen \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "dodan \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "prenašam"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Ponovno berem konfiguracijsko datoteko"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Kodiranje datotečnega sistema \"%s\" ni podprto v tej verziji"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Ni mogoče prebrati mapo"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**opozorilo** %s je dvojniški torrent za %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**opozorilo** %s vsebuje napake"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... uspešno"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "odstranjam %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "končano preverjanje"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Ni moč zapisati datoteke %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Ni mogoče prenesti ali odpreti \n%s\nPoskusite z prenesti torrent z drugim brskalnikom."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Objava sledilnika po %d sekundah še vedno ni zaključena"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Težava pri povezovanju s sledilnikom, gethostbyname ni uspel -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Težava pri povezovanju s sledilnikom - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "napačni podatki sledilnika - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "zavrnitev s strani sledilnika - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Preklic torrenta, ker ga je sledilnik zavrnil in ni povezave z nobenim vrstnikom. "
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Sporočilo sledilnika: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "opozorilo sledilnika - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "napačni meta-podatki - ni slovar"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "napačni meta-podatki - napačen ključ za delce"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "napačni meta-podatki - neveljavna velikost delca"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "napačni meta-podatki - napačno ime"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "ime %s ni dovoljeno iz varnostnih razlogov"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "mešanica enojne/večih datotek"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "napačni meta-podatki - napačna velikost"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "napačni meta-podatki - »files« ne vsebuje seznama datotek"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "napačni meta-podatki - napačna pot"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "napačni meta-podatki - napačna pot za mapo"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "pot %s ni dovoljena iz varnostnih razlogov"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "napačni meta-podatki - podvojena pot"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "napačni meta-podatki - enako ime za datoteko in podmapo"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "napačni meta-podatki - napačna vrsta objekta"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "napačni meta-podatki - ni niza s povezavo za objavo"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "napačen spisek vrstnikov"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "napačen interval najavljanja"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "najmanjši interval najavljanja napačen"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "napačen id sledilnika"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "napačno število vrstnikov"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "napačno število sejalnikov"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"zadnji\" vnos napačen"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Poraba: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenti so -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(privzeto v"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "neznana tipka"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "preverjanje vnosne vrstice se je ponesrečilo pri"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Nastavitev %s je potrebna"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Preveč argumentov - %d največ."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "napačen format %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Vhod za povezave."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "URL za preusmeritev info strani"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "prikaz imen iz dovoljenega imenika"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"vaša datoteka morebiti obstaja kje drugje v univerzi,\n toda žal, ne tukaj\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Zapisnik zagnan:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Zapisnik ponovno odprt:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Ustavljam:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Ni moč začeti dveh ločenih kopij istega torrent-a"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "neveljaven benkodiran niz"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "neveljavna benkodirana vrednost (podatki za veljavnim predlogom)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Ni mogoče odpreti vrat: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Začetni zagon"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "prenos ni uspel:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO napaka: Ni več prostora na disku, ali pa ni mogoče ustvariti tako velike datoteke:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "končano zaradi napake IO:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "končano zaradi napake OS:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Dodatna napaka ob zapiranju zaradi napake:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "sejem"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Zapis podatkov za hitro nadaljevanje ni mogoč:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "izklop"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Izgleda, da imate staro različico Python-a, ki ne podpira samodejnega zaznavanja kodiranja znakov. Privzemam »ASCII«."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python ni uspel samodejno zaznati kodiranja znakov. Uporabljam »ASCII«."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Kodiranje znakov »%s« ni podprto. Uporabljam »ASCII«."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Napačna pot do datoteke: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ta datoteka .torrent je bila ustvarjena s pokvarjenim programom in ima napačno zakodirana imena datotek. Nekatera ali vsa imena datotek so lahko prikazana drugače, kot si je zamislil ustvarjalec datoteke .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Ta datoteka .torrent je bila ustvarjena s pokvarjenim programom in vsebuje napačne vrednosti za znake, ki ne ustrezajo nobenemu pravemu znaku. Nekatera ali vsa imena datotek so lahko prikazana drugače, kot si je zamislil ustvarjalec datoteke .torrent."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Ta datoteka .torrent je bila ustvarjena s pokvarjenim programom in ima napačno zakodirana imena datotek. Uporabljena imena so lahko kljub temu pravilna."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Nabor znakov na krajevnem datotečnem sistemu (»%s«) ne more predstaviti vseh znakov, ki so uporabljeni za imena datotek v tem torrent-u. Imena datotek so bila prilagojena."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Ta datoteka .torrent je bila ustvarjena s pokvarjenim programom in vsebuje vsaj eno datoteko z napačnim imenom datoteke ali mape. Ker pa imajo vse take datoteke velikost 0, bodo spregledane."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Ni bilo mogoče poslati ukaza:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "strežniška vtičnica izgubljena"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Napaka pri ravnanju s sprejeto povezavo: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Zaradi nezanesljivega sklada TCP je potreben izhod. Več o tem na strani %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/sq.po b/po/sq.po
new file mode 100644
index 0000000..3e58aa4
--- /dev/null
+++ b/po/sq.po
@@ -0,0 +1,2887 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-18 01:54-0700\n"
+"Last-Translator: Matt Chisholm <matt@bittorrent.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "tërhiq për rirënditje"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "kliko me të djathtën për meny"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k e më lartë"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k e më lartë"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL/cable 768k e më lartë"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr ""
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr ""
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Ndalo përkohësisht gjithë torrentat"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Vazhdo shkarkimin"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Verzion i ri %s në dispozicion"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Një verzion më i ri i %s në dispozicion.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Po përdor %s, dhe verzioni i ri është %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Gjithmonë mund ta marrësh verzionin më të fundit nga \n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Shkarko _më vonë"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Shkarko _tani"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Kujtoma më vonë"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Rreth %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Verzioni %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Dhuro"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Raport Aktiviteti"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Ruaj raportin në:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "raporti ruajtur"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "raporti fshirë"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Veqoritë"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Shiriti i përparimit është gjithmon i zi\n"
+" (kërkonë rifillim)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Duke ruajtur"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Rauj shkarkimet e reja në:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Ndrysho..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Pyet ku të ruaj çdo shkarkim"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Në shkarkim"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Rrjet"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Shiqo për port të lirë"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "duke filluar në portin:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP-ja që raportohet në tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Nuk ka efekt përderisa je\n"
+" në të njejtën rrjetë lokale si trackeri) "
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"VËREJTJE: Ndryshimi i këtyre rregullimeve mund\n"
+"të pengoj %s nga funkisonimi i rregulltë."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Mundësia"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Vlera"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "I përparuar"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Zgjedhë folderin parazgjedhje për shkarkim"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Skedarët në \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Kurr mos shkarko"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Emër skedari"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Gjatësia"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Palë për \"%s\"\t"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adresa"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Lidhja"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s zbritje"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s ngritje"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB shkarkuar"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB ngarkuar"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% përfunduar"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s përaf. shkarkim nga pala"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID e palës"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Interesuar"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Mbytur"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Mospërfillur"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Ngarkim optimist"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "largë"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "palë e keqe"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d keq"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "ndaluar"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info për \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Emri i torrentit:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(torrent pa përcjellës)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Announce url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", në një skedarë"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", në %d skedarë"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Madhësia e plotë:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Copëzat:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Emri i skedarit:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Direktorium i hapur"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Hiq torrentin"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Ndërprej torrentin"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", do të seed për %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", do të seed pambarimisht."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Kryer, raporti i ndarjes: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Kryer, %s ngarkuar"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Kryer"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Lista e skedarëve"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Lista e palëve"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Ndrro vendndodhjen"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Ri_fillim"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Fund"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Hiq"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Ndalim"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Je i sigurtë se do ta heqësh \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Raporti i ndarjes suaj për këtë torrent është %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Ti ke ngarkuar %s për këtë torrent. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Heq këtë torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Kryer"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "tërhiqe në list për seed"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Dështoj"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "tërhiqe në list për rifillim"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Në pritje"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "_Ndërprerë"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Veprues"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Ng i tanishëm: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Shk i tanishëm: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Ng i mëparshëm: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Shk i mëparshëm: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Raporti i ndarjes: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds. Totali prej trakerit: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Kopjet e shpërndara: %d; Pasues: %s\t"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Pjesët: %d total, %d komplet, %d pjesërisht, %d aktiv (%d zbrazët)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d pjesë të kqija + %s në kërkesa të hudhura"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% kryer, %s përfunduar"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Shpejtësia e shkarkimit"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Shpejtësia e ngarkimit "
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "NA"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s filluar"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Dil"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Hap skedarin torrent "
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Krijo _torrent të ri"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pauzë/Luaj"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Trego/Fshi _torrentat e përfunduar"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Ditar"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Veqoritë"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Ndihmë"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Mbi"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Dhuro"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Skedarë"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Shikim"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(ndaluar)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(shumëfishtë)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+"%s ndihma është në \n"
+"%s\n"
+"Dëshiron ta vizitosh tani?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Shiqo faqen ueb të ndihmës?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Nuk ka torrent të përfunduar në listë."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Dëshiron ta heqësh?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Ka %d torrenta të përfunduar në listë."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Dëshiron t'i heqësh të gjithë?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Heq të gjithë torrentat e përfunduar?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "S’ka torrenta të përfunduar "
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "S’ka torrenta të përfunduar për të hequr."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Hap torrentin:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Zëvendëso vendodhjen e ruajtës me"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Skedari ekziston!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" veç ekziston. Do të zgjedhësh një emër tjetër skedari?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Ruaj vendndodhjen për"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Ndrysho..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "Emri i skedarit: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "Madhësia e plotë:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "Copëzat:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "Announce url: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..6180f9c
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,2850 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-28 11:26-0800\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <bugs (at) bittorrent (dot) com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Country: SWEDEN\n"
+"X-Poedit-Language: Swedish\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Installera Python %s eller senare"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "nedvärderad, använd inte"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "Kunde inte kommunicera med en annan %s-process, men en verkar köras."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Om du stänger alla %s fönster kanske problemet löses."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s körs redan"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Kunde inte kommunicera med en annan %s-process."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s eller nyare krävs"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "dra för att sortera om"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "höger-klicka för meny"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "uppringd"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k upp"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k upp"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k upp"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Skriv in torrentens URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Skriv in URL till torrentfil för att öppna denna:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maximal upladdningshastighet:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Stoppa alla torrenter tillfälligt"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Fortsätt nerladdning"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Ny %s version tillgänglig"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "En nyare version av %s är tillgänglig.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Du använder %s, och den nya versionen är %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Du kan alltid hitta den senaste versionen från \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Ladda ner _senare"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Ladda ner _nu"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Påminn mig senare"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Om %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Kunde inte öppna %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Donera"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Aktivitetslogg"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Spara logg i:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "logg sparad"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "logg rensad"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Inställningar"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Allmänt"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Starta BitTorrent när Windows startar"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Minimera till systemfältet"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Progress bar text är alltid svart\n(kräver omstart)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Sparar"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Spara nya nerladdningar i:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Ändra..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Fråga var man skall spara varje ny nerladdning"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Laddar ner"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "När du startar en ny torrent:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Stoppa en annan torrent som kör för att skapa plats"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Stoppa inte andra torrentar som kör"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Fråga varje gång"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Seedar"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Seeda kompletta torrenter: tills utdelningskvoten når [_] procent, eller under [_] minuter, vilket som än kommer först."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Seeda i oändlighet"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Seeda sista kompletta torrenten: tills utdelningskvoten når [_] procent."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Nätverk"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Leta efter tillgänglig port:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "starta vid port:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Aktivera automatisk portmatchning"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP att rapportera till trackern:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(Har ingen effekt om du inte är på\nsamma lokala nätverk som trackern)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"VARNING: Om du ändrar dessa inställningar kanske %s inte fungerar korrekt."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Alternativ"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Värde"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Avancerat"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Välj standard nedladdningskatalog"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Kunde inte ta bort genväg: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Filer i \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Aldrig"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Ladda aldrig ner"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Ladda ner normalt"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Först"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Ladda ner först"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Filnamn"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Längd"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Nerladdning"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "aldrig"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "först"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Peers för \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adress"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Klient"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Uppkoppling"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s ner"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s upp"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB nerladdat"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB uppladdat"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% färdig"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s upskattad peer nedladdning"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Intresserad"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Strypt"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Avfärdad"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Optimistisk uppladdning"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "fjärr"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "lokal"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "dålig peer"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d dålig"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "bannlyst"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Info för \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrent namn:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(trackerlös torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Meddela url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", i en fil"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", i %d filer"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Total storlek:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Delar:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Info hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Spara i:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Filnamn:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Öppna katalog"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Visa _fillista"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent info"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Ta bort torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Avbryt torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", kommer att seeda i %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", kommer att seeda på obestämd tid."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Klar, utdelningskvot: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Klar, %s uppladdat"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Klar"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Fil lista"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Peer lista"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Byt plats"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Seeda i oändlighet"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Om_start"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Avsluta"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Ta bort"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Avbryt"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Är du säker på att du vill ta bort \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Din utdelningskvot för denna torrent är %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Du har laddat upp %s till den här torrenten."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Ta bort den här torrenten?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Färdigt"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "dra till lista för att seeda"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Misslyckad"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "dra till lista för att fortsätta"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Väntar"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Pausad"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Körs"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Aktuell upp: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Aktuell ner: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Föregående upp: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Föregående ner: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Utdelningskvot: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds. Totalt från tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Fördelade kopior: %d; Nästa: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Bitar: %d total, %d klara, %d ofullständiga, %d aktiva (%d tomma)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d ogiltiga bitar + %s i bortkastade begäran"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% klar, %s återstår"
+
+#: bittorrent.py:2311
+msgid "Download rate"
+msgstr "Nedladdningshastighet"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Uppladdningshastighet"
+
+#: bittorrent.py:2328
+msgid "NA"
+msgstr "Inte tillgänglig"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s startad"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "_Avsluta"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "S_täng"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Öppna torrentfil"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Öppna torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Skapa _ny torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_Pausa/Starta"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "Visa/Dölj _färdiga torrenter"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "_Anpassa fönsterstorleken efter innehållet"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Logg"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_Inställningar"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_Hjälp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Om"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_Donera"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Fil"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Vy"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Sök efter torrenter"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(stoppad)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(flera)"
+
+#: bittorrent.py:3155
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Laddar redan ned %s -installeraren"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Installera nya %s nu?"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "Vill Du avsluta %s och installera den nya versionen, %s, nu?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s hjälp finns på \n%s\nVill du gå dit nu?"
+
+#: bittorrent.py:3179
+msgid "Visit help web page?"
+msgstr "Vill du besöka hjälpsidan?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Det finns en färdig torrent i listan."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Vill du ta bort den?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Det finns %d färdiga torrenter i listan."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Vill du ta bort alla dessa?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Ta bort alla färdiga torrenter?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Inga färdiga torrenter"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Det finns inga färdiga torrenter att ta bort."
+
+#: bittorrent.py:3285
+msgid "Open torrent:"
+msgstr "Öppna torrent:"
+
+#: bittorrent.py:3309
+msgid "Change save location for "
+msgstr "Byt lagringplats för"
+
+#: bittorrent.py:3336
+msgid "File exists!"
+msgstr "Filen finns redan!"
+
+#: bittorrent.py:3337
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" finns redan. Vill du spara under annat namn?"
+
+#: bittorrent.py:3356
+msgid "Save location for "
+msgstr "Spara filväg för"
+
+#: bittorrent.py:3374
+msgid "Directory exists!"
+msgstr "Katalogen finns!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" finns redan. Vill Du skapa en identisk kopia av katalogen i den befintliga katalogen?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(globalt meddelande) : %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Fel"
+
+#: bittorrent.py:3512
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Flera fel har uppstått. Klicka på OK om du vill visa felloggen."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Sluta köra torrent?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Du håller på att starta \"%s\". Vill du stoppa en annan körande torrent också?"
+
+#: bittorrent.py:3691
+msgid "Have you donated?"
+msgstr "Har Du donerat?"
+
+#: bittorrent.py:3692
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Välkommen till den nya versionen av %s. Har Du donerat?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Tackar!"
+
+#: bittorrent.py:3708
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Tack för att Du donerar! För att donera igen, välj \"Donera\" från \"Hjälp\"-menyn."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Kunde inte starta Torrentkön. Se felbeskrivning ovan."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrent-filskapare %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Skapa torrentfil för denna fil/katalog:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Välj..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Katalogerna kommer att bli batch-torrenter)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Delstorlek:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Använd _tracker:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Använd _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Noder (valfri):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Kommentarer:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Gör"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Värd"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Port"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Bygger torrenter..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Kontrollerar filstorlekar..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Börjar seeda"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "bygger"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Klar."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Klar med att bygga torrenter."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Fel!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Fel vid byggande av torrenter:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s eller nyare krävs"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d dagar"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 dag %d timmar"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d timmar"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d minuter"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d sekunder"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 sekunder"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Hjälp"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Återkommande frågor:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Gå"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Välj en existerande mapp..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Alla filer"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrenter"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Skapa en ny mapp..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Välj en fil"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Välj en mapp"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Kunde inte ladda sparat skick:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Kunde inte spara UI skick:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Ogiltigt skick av filens innehåll"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Fel vid läsning av fil \"%s\"."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "kan inte återställa skicket fullständigt"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Ogiltigt filskick (dubbel inmatning)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Felaktiga data i \"%s\", kan inte återställa torrent."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash passar inte)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Ogiltigt filskick (felaktig inmatning)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Dåligt UI-filskick"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Dålig UI fil skick version"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "UI-tillståndsfilversion stöds inte (från nyare klientversion?)"
+
+#: BitTorrent/TorrentQueue.py:489
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Kunde inte ta bort cachad %s fil:"
+
+#: BitTorrent/TorrentQueue.py:530
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Detta är ingen giltig torrentfil. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Denna torrent (eller en med samma innehåll) körs redan."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Denna torrent (eller en med samma innehåll) väntar redan på att köras."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent i okänt skick %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Kunde inte skriva fil"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "torrenten kommer inte att startas om korrekt vid klientens omstart"
+
+#: BitTorrent/TorrentQueue.py:671
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Kan inte köra mer än %d torrenter samtidigt. Om du vill veta mer, se FAQ på %s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Startar inte torrenten eftersom det finns andra torrenter som väntar på att köras och denna möter redan de krav som ställts för att sluta seeda."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Startar inte torrent då denna redan möter de krav som satts för när den senast färdiga torrenten skall sluta seedas."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Kunde inte motta den senaste versionen från %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Kunde inte tolka den nya version-strängen från %s"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Kunde inte finna en lämplig tillfällig lagringsplats för %s %s -installationen."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Ingen torrentfil tillgänglig för %s %s -installationen."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+"%s %s installationen ser ut att vara ofullständig, saknas, eller trasig."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Kan ej starta installationen under detta OS"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Inga torrenter"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Startar nedladdning"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Körs normalt"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Nedladdningarna kan ev. gå långsamt:\nTroligen beroende på brandvägg/NAT"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kontrollera nätverksanslutning"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"katalog där variabeldata som snabbåternedhämtnings data och användarinterface-inställningar är sparade. Standardkatalogen är underkatalogen 'data' i programmet bittorrents config katalog."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"tangentbordsuppsättning som används på det lokala filsystemet. Autokonfigurerad om lämnad tom. Autokonfiguration fungerar ej under pythonversioner äldre än 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "ISO Språkkod som skall användas"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"ipnummer som rapporteras till trackern (detta har bara effekt om du sitter i samma lokala nätverk som trackern)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"publikt portnummer om det är annat än det nummer klienten lyssnar på lokalt"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"lägsta port att lyssna på, räknar uppåt om den lägre porten ej är tillgänglig"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "högsta porten att lyssna på"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "ip nummer att binda till lokalt"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "sekunder mellan updatering av visad information"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "minuter programmet skall vänta innan den söker efter fler peers"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "minimalt antal peers för att inte återfråga efter fler peers"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "antal peers där programmet skall stoppa söka nya anslutningar"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "max. antal utgående icke-kompletta anslutningar"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"maximalt antal anslutningar, över detta antal kommer nya inkommande anslutningar att kopplas ned direkt"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "huruvida programmet ska kontrollera hashar på disk"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "maximalt antal kB/s att ladda upp i, 0 betyder obegränsad hastighet"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "antalet uppladdningar att fylla i med extra optimistiska ostrypningar"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"det maximala antalet filer i en multifil torrent att hålla öppna på samma gång, 0 betyder obegränsat. Används för att undvika få slut på filpekare."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Initiera en trackerlös klient. Detta måste vara aktiverat för att kunna ladda ner trackerlösa torrents."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "antalet sekunder att pausa mellan sändning av kvarhållande (torrenter)"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "hur många bytes att fråga om per förfrågan."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"maximal längd prefix kodning du accepterar över linan - större värden får anslutningen att gå ned."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"sekunder att vänta mellan stängning av sockets som ingenting has blivit mottaget på"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"sekunder att vänta mellan kontroll om några anslutningar har time:at ut"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"maximal längd skiva att sända till peers, stäng anslutning om en större begäran är mottagen"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"maximala tidsintervallet över vilket den aktuella upp- och nerladdningshastigheten ska uppskattas"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+"maximala tidsintervallet över vilket den aktuella utdelningskvoten ska uppsakttas"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"maximal tid att vänta emellan att försöka meddela igen om de fortsätter att misslyckas"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"sekunder att vänta för data att komma in över en anslutning före antagan att det är semi-permanent tilltäppning"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"antal nedladdningar till vilken att byta från slumpmässig till mest sällsynt först"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "hur många bytes att skriva till nätverks buffrar på en gång."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"vägra ytterligare anslutningar från adresser med söndrig eller avsiktligt fientliga peers som sänder felaktig data"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "anslut inte till flera peers som har samma ip-address"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"om icke noll, sätt TOS alternativet för peer anslutningar till detta värde"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"aktivera fix för en bug i BSD libc som gör filläsningar väldigt långsamma."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "HTTP proxy adress att använda för tracker anslutningar"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "stäng anslutningar med RST och undvik TCP TIME_WAIT tillståndet"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Använd Tvinnade nätverk-bibliotek för nätverksanslutningar. 1 betyder använd tvinnade, 0 betyder använd inte tvinnade, -1 betyder upptäck automatiskt, och föredra tvinnade"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"filnamn (för singelfiltorrents) eller katalognamn (för ett set torrents) att spara torrenten som, överskridandes standardnamnet i torrenten. Se även --save_in, om ingendera är specificerad kommer användaren bli frågad om plats att spara"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "visa avancerat användarläge"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"maximalt antal minuter att seeda en färdig torrent innan stopp av seedning"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"maximal uppladdnings-/nedladdningskvot, i procent, att uppnå innan stopp av seedning. 0 betyder ingen gräns."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"maximal uppladdnings-/nedladdningskvot, i procent, att uppnå innan stopp av seedning av den sista torrenten. 0 betyder ingen gräns."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seeda varje komplett torrent i oändlighet (tills dess att användaren avbryter den)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Seeda den sista torrenten i oändlighet (tills dess att användaren avbryter den)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "starta nedladdaren i pausat läge"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"specificerar hur applikationen ska bete sig när användaren manuellt försöker att starta en annan torrent: \"ersätta\" betyder att alltid ersätta den körande torrenten med en ny, \"lägga till\" betyder att alltid lägga till den körande torrenten parallellt, och \"fråga\" betyder fråga användaren varje gång."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Starta BitTorrent minimerat"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"åsidosätt rapporten från 'http version check' och aktivera felsökningsläget för versionskontroll istället"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"åsidosätt den version som används i 'version check' och aktivera felsökningsläget för versionskontroll istället"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"specifiera fönsterstorlek och -position i formatet: BREDDxHÖJD+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"filnamn (för singelfiltorrents) eller katalognamn (för torrents i omgångar) att spara torrenten som, överskrider standardnamnet i torrenten. See även --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"maximala antalet tillåtna uppladdningar samtidigt. -1 betyder (förhoppningsvis) ett vettigt antal baserat på --max_upload_rate. Det automatiska värdet är endast klokt att använda om man kör en torrent åt gången."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"lokal katalog där torrents innehållet kommer sparas. Filen (single-fil torrents) eller katalogen (torrents i omgångar) kommer att bli skapade under denna katalogen med standard namnet specificerat i .torrent filen. Se även --save_as."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+"huruvida programmet ska fråga eller inte efter en plats där ledladdade filer ska sparas"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"lokal katalog där torrenterna kommer att sparas, med ett standard namn fastställd av --saveas_style. Om denna lämnas tom kommer varje torrent att sparas under den motsvarande .torrentfilens katalog"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "hur ofta torrent katalogen ska sökas av, i sekunder"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"vänta detta antal sekunder efter du har noterat en torrent innan du startar den, så att du undviker tävling med tracker"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Hur man ska namnge torrent nedladdningar: 1: använda namn PÅ torrent-fil (minus .torrent); 2: använd namn kodat I torrent fil; 3: skapa en katalog med namn PÅ torrent-fil (minus .torrent) och spara i den katalogen med namnet som kodats I torrent-fil; 4: om namn PÅ torrent-fil (minus .torrent) och namn kodat I torrent-fil är identiska, använd det namnet (stil 1/2), skapa annars en mellanliggande katalog som i stil 3; VARNING: alternativ1 och 2 kan skriva över filer utan att varna och kan medföra säkerhetsrisker."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"huruvida att visa den fulla sökvägen eller torrentens innehåll for varje torrent"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "katalog att söka .torrent filer i (semi-rekursivt)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "huruvida att visa diagnostik info till stdout"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "vilken faktor av två att sätta bit storleken till"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "förvalt trackernamn"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"om falskt så skapa en trackerlös torrent, istället för att meddela URL, använd pålitlig nod i form av <ip>:<port> eller en tom sträng för att dra några noder från din rotningstabell"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "nerladdning färdig!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<okänd>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "klar om %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "nerladdningen lyckades"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB upp / %.1f MB ned)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB upp / %.1f MB ner)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d sedd nu, plus %d distruberade kopior (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d distribuerade kopior (nästa: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d sedd nu"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "FEL:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "sparar:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "filstorlek:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "procent klart:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "tid kvar:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "ladda ner till:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "nerladdningshastighet:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "uppladdningshastighet:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "utdelningskvot:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "seed status:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "peer status:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "Du kan inte specifiera både --spara_som och --spara_i"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "stänger av"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Fel vid läsning av konfiguration:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Fel vid läsning av .torrent fil:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "du måste specifiera en .torrent fil"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Textläges-GUI initialisering misslyckades, kan inte fortsätta."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Detta nerladdningsgränssnitt kräver standard Python modul \"curses\", som olyckligtvis inte är tillgänglig för den tillhörande porten till Python. Den är däremot tillgänglig för Cygwin porten till Python, som körs i alla Win32 system (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Du kan fortfarande använda \"bittorrent-konsolen\" för nerladdning."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "fil:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "storlek:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "dest:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "progress:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "status:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "dl hastighet:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "ul hastighet:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "utdelar:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "seeds:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "peers:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d sedd nu, plus %d distribuerade kopior(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "fel:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "fel:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+" # IP Uppladdning Nerladdning Färdigt Hastighet"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "laddar ner %d bitar, har %d fragment, %d av %d bitar klara"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Dessa fel förekom under utförandet:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Användning: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "gammalt meddelande för %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "inga torrenter"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SYSTEMFEL - UNDANTAG ERHÅLLET"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Varning:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " är inte en katalog"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "fel: %s\nkör utan argument för parameter förklaringar"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nUNDANTAG:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Du kan fortfarande använda \"btdownloadheadless.py\" för att ladda ner."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "ansluter till peers"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "ETA i %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Storlek"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Uppladdning"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Totalt:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s peers %s seeds %s dist kopior - %s ner %s upp"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "fel:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nkör utan argument för parameter förklaringar"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "valfri mänskligt läsbar kommentar att sätta i .torrent"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "valfri målfil för torrenten"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - dechiffrera %s metainfo filer"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Användning: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "metainfo fil: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "info hash: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "filnamn: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "filstorlek:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "filer:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "katalognamn: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "arkivstorlek:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "meddelande url för tracker: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "trackerlösa noder:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "kommentera:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Mån"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Tis"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Ons"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Tors"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Fre"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Lör"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Sön"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Jan"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Feb"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Apr"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Maj"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Jun"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Jul"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Aug"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Sep"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Okt"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Nov"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Dec"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Komprimerad: %i Okomprimerad: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Kunde inte spara alternativ permanent:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "Fel vid läsning av config fil. Gammal config fil sparad i \"%s\""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Konflikt i konfigurationsalternativen: '%s'"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Du måste avsluta %s och ominstallera det. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Kunde inte hitta översättning för språket \"%s\"\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Filen %s tillhör en annan torrent som körs"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Filen %s existerar redan, men är inte en vanlig fil"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Kort läsning - något trunkterade filerna?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"fastresume-filformatet stöds inte, det kanske är från en annan klientversion?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Något annat program ser ut att ha flyttat, bytt namn, raderat filen, eller %s så har den kraschat sist den var i gång."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Ett annat program ser ut att ha ändrat filen, eller %s så har den kraschat sist den var i gång."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Ett annat program ser ut att ha ändrat filens storlek, eller %s så har den kraschat sist den var i gång."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Kunde inte läsa snabbåterupptagningsdata:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "anslutning nekad"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+"Du bad återanvändning att vara av vid bindning. Ledsen, jag kan inte göra det."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever() borde endast anropas en gång per reaktor."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() kanske inte returnerar fram tills det att det finns aktivitet, och kanske inte processar det anrop du vill. Använd listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "skadad data i svarsfil - total för liten"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "skadad data i svarsfil - total för stor"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "kontrollerar existerande fil"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"--check_hashed 0 eller så matchar snabbåterupptagningsinfo inte filtillståndet (saknad data)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Skadad snabbåterupptagningsinfo (filer innehåller mer data)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Skadad snabbåterupptagningsinfo (felaktigt värde)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "data på disk korrupt - du kanske har två kopior körandes?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "sagda fil färdig vid uppstard men en bit misslyckades vid hash-kollen"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Kunde inte sätta signalhanterare:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "släppte \"%s\""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "tillagd \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "väntar på hashkontroll"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "laddar ner"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "läser in konfigurationsfilen på nytt"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Du kan inte specificera namnet på .torrent-filen när du genererar multipla torrenter samtidigt"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Filsystemskodning \"%s\" stöds inte i den här versionen"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Kunde inte konvertera fil- / katalognamn \"%s\" till utf-8 (%s). Antingen är den förutsatta filsystemskodningen \"%s\" fel eller så innehåller filnamnet felaktiga bytes."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Fil- / katalognamnet \"%s\" innehåller reserverade unicodevärden som inte motsvarar tecken."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Kunde inte läsa katalog"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Kunde inte starta"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "tar bort %s (kommer att läggas till igen)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**varning** %s är en dublett torrent utav %s"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**varning** %s innehåller fel"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... lyckades"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "tar bort %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "kontrollering färdig"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Kunde inte läsa katalog %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Kunde inte ladda ner eller öppna \n%s\nProva använda en webbläsare för att ladda ner torrent filen."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Python %s eller nyare krävs"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "För sent att byta RawServer backends, %s har redan använts."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "Tracker meddelar fortfarande inte klart %d sekunder efter start"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "Problem vid anslutning till tracker, gethostbyname misslyckades -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Problem med uppkopplingen till trackern -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dålig data från trackern -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "nekad av trackern - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Avbryter torrenten som om den var nekad av trackern medans den inte är ansluten till några peers."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Meddelande från trackern:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "varning från trackern - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Trackerlös uppslag misslyckad:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "ogiltigt metainfo - inte en katalog"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "ogiltigt metainfo - tangent för ogiltiga bitar"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "ogiltig metainfo - otillåten del längd"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "ogiltig metainfo - ogiltigt namn"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "namn %s är otillåtet av säkerhetsskäl"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "ensam-/flerfil mix"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "ogiltig metainfo - ogiltig längd"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "ogiltig metainfo - \"filer\" är inte en lista över filer"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "ogiltlig metainfo - filen måste vara en mapp"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "ogiltig metainfo - ogiltig filadress"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "ogiltig metainfo - ogiltig mappadress"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "filadress %s är ej tillåten på grund av säkerhetsskäl"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "ogiltig metainfo - dubblerad filadress"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "ogiltig metainfo - namn används till både fil och underkatalogs namn"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "ogiltig metainfo - felaktig objekttyp"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "ogiltig metainfo - ingen meddelandeURL-sträng"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "ogiltig metainfo - noden är inte en lista"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "ogiltig metainfo - nodlistan får bara ha två element"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "ogiltig metainfo - nodens värdnamn måste vara ett strängvärde (text)"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "ogiltig metainfo - nodens port måste anges som ett nummer"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "felorsaken måste anges som ett strängvärde (text)"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "Varningsmeddelande måste vara ett strängvärde (text)"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"ogiltig information i peer-listan - peer-infon måste vara kompatibel med programscriptet"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "felaktigt post i peer-listan - peer-IP måste vara en sträng"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "ogiltig information i peer-listan - porten måste anges som ett nummer"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "ogiltig post i peer-listan - ogiltigt peerId"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "ogiltig peer-lista"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "ogiltigt meddelandeintervall"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "ogiltigt min. meddelandeintervall"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ogiltigt trackerId"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "ogiltig peer-mängd"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "ogiltig seed-mängd"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "ogiltig \"sista\"-inmatning"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Användning: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[ALTERNATIV] [TORRENTKATALOG]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Om ett argument förekommer som inte ingår i alternativen, tolkas det som värdet\n av torrent_dir-alternativet.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[ALTERNATIV] [TORRENTFILER]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[ALTERNATIV] [TORRENTFIL]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[ALTERNATIV] TRACKER_URL FIL [FIL]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argumenten är -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(standard för"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "okänd nyckel"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "parameter tillagd i slutet, men utan värde"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "kommandoradsanalys misslyckades vid"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Alternativ %s är obligatoriskt."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Måste ange minst %d argument."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "För många argument - %d är max."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "felaktigt format på %s - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Lyssningsport."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "fil att spara aktuell nerladdningsinfo i"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "timeout för stängning av anslutningar"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "sekunder mellan sparande av dfil"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "sekunder mellan utgående nerladdare"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "sekunder som nerladdare ska vänta mellan återtillkännagivanden"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"standard antal peers att skicka ett infomeddelande till om klienten inte specificerar ett antal"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "tid mellan kontroller om någon anslutning har fått 'time out'"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"hur många kontroller om nerladdaren sitter bakom NAT (0=ingen kontroll)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+"huruvida programmet ska lägga till en notering till loggen om nat-kontrollens resultat"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "minsta tid från den senaste rensningen tills en ny görs"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr "minsta tid i sekunder innan en cache betraktas som gammal och raderas"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"tillåt endast nerladdningar för .torrents i denna katalog (och rekursivt i underkataloger till kataloger som inte själva har några .torrent-filer). Om inställt, visas torrents i denna katalog på infopage/scrape vare sig de har peers eller inte"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"tillåt speciella keys i torrenter i tillåten_dir att påverka tracker tillgång"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "ska loggfilen öppnas när HUP signal mottas?"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr "ska en infosida visas när trackerns rotkatalog är laddad?"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "en URL att omdirigera infosidan till"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "ska namn visas från tillåten katalog?"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"fil som innehåller x-icondata för återvändning när webbläsaren efterfrågar favicon.ico"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"ignorera ip GET parametern från maskiner som inte befinner sig i det lokala nätverkets IP-serie(0 = aldrig, 1 = alltid, 2 = ignorera om NAT-kontroll inte är aktiverad). 'HTTP proxy headers' som visar adress från orginalklient behandlas som --ip."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "fil att skriva trackerns loggar i, använd - för stdout (standard)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"använd med allowed_dir; lägger till en /fil?hash={hash} url som tillåter användare att ladda ner torrent filen"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"behåll döda torrenter efter att de har gått ut (så att de fortfarande visas på din /scrape och websida). Gäller endast of tillåten_dir inte är inställd"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "scrape-tillträde tillåten (kan vara inget, specificerat eller allt)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "maximalt antal peers att ge med vilken som helst förfrågan"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"din fil kanske existerar någon annanstans i detta universum\nmen tyvärr, inte här\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**varning** specificerad favicon-fil -- %s -- existerar inte."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**varning** statusfil %s korrupt; återställer"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Logg Startad:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**varning** kunde inte omdirigera stdout till loggfil:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Logg omöppnad:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**varning** kunde inte öppna loggfil igen"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "specifik skrap funktion är inte tillgänglig med denna tracker."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "full skrape funktion är inte tillgänglig med denna tracker."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "erhåll funktion är inte tillgänglig med denna tracker."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "Begärd nerladdning är inte aktoriserad att användas med denna tracker."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "kör utan argument för parameter förklaringar"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Stänger ner:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Kan inte starta två separata exempel av samma torrent"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Göm %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Visa %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "inte en giltig bkodad sträng"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "ogiltig bkodat värde (data efter giltigt prefix)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport understiger minport - saknar portar att kontrollera"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Kunde inte öppna en lyssningsport: %s."
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Kunde inte öppna en lyssningsport: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Kontrollera dina port-inställningar."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Initialstart"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Kan inte ladda snabbåterladdningsdata: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Kommer genomföra total hashkontroll."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "del %d misslyckade hashkontroll, åternerladdar den"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Försöker att ladda ner en trackerlös torrent med trackerlös klient avstängd."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "nerladdning misslyckad:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Fel: Ingen plats kvar på disken, eller kan inte skapa en fil så stor:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "dödad av IO fel:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "dödad av OS fel:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "dödad av internt undantag:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Ytterligare fel vid stängning på grund av fel:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Kunde inte ta bort snabbåterupptagningsfil efter fel:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "seedar"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Kunde inte skriva snabbåterupptagnings data:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "stäng av"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Detta verkar vara en gammal version av Python som inte stöjder upptäckande av filsystemets kodning. Förmodar 'ascii'."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python misslyckades med att automatiskt upptäcka filsystemets kodning. Använder 'ascii' istället."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "Filsystemets kodning '%s' stöds inte. Använder 'ascii' istället."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Felaktig filsökvägskomponent:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denna .torrentfil har skapats med ett felaktigt verktyg och innehåller felaktigt kodade filnamn. Några eller alla filnamn kan vara annorlunda från hur skaparen av .torrentfilen tänkt sig att de skulle vara."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Denna .torrentfil har skapats med ett felaktigt verktyg och innhåller felaktiga teckenvärden som inte kan matchas till något riktigt tecken. Några eller alla filnamn kan vara annorlunda från hur skaparen av .torrentfilen tänkt sig att de skulle vara."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Denna .torrentfil har skapats med ett felaktigt verktyg och har felaktigt kodade filnamn. Namnen som används kan fortfarande vara korrekta."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Teckentabellen som används på de lokala filsystemet (\"%s\") kan inte representera alla tecken som används i filnamnen / filnamnet för denna torrent. Filnamnen har ändrats från orginalet."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Windows filsystem kan inte hanter vissa av tecknena som används i filnamnet(nen) för denna torrent. Filnamnen har blivit ändrat från orginalet."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Denna .torrentfil har skapats med ett felaktigt verktyg och har minst en fil med en ogiltligt fil- eller katalogsnamn. Dessa filer är dock storlek 0 och har ignorerats."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Ohanterat kommando: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kunde inte skapa kontroll socket: används redan"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Kunde inte ta bort gamla kontrollsocket filnamn:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kunde inte skapa kontrollsocket:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Kunde inte skicka kommando:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Global mutex redan skapad."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Kunde inte finna en öppen port!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Kunde inte skapa applikations informations-katalog!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "Kunde inte få globalt mutex-lås för kontroll-socket fil!"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "En tidigare instans av BT var inte korrekt borttagen. Fortsätter."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "En annan instans av BT körs, men \"%s\" existerar inte.\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Jag gissar vid porten."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Port hittad: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Kunde inte hitta port."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC status: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE Konversation ansluten."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "misslyckade med att avregistrera eller stänga ner server socket: %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "förlorad server-socket"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Fel vid hantering av accepterad anslutning:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+"Tvingas att avsluta på grund av TCP stack flacking out. Vänligen se FAQ vid %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "Mottog okänd meddelandetyp"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "timeout"
+
diff --git a/po/th.po b/po/th.po
new file mode 100644
index 0000000..376cd89
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,2880 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-27 02:57-0700\n"
+"Last-Translator: Yongyut Booncherd <mryongyut@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "ลากเพื่อจัดใหม่"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "คลิกเม้าส์ขวาเพื่อเลือกเมนู"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "dialup"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128k ขึ้นไป"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256k ขึ้นไป"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k ขึ้นไป"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "กรุณาใส่ torrent URL"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "กรุณาใส่ URL ของไฟล์ torrent ที่จะเปิด"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "อัพโหลดมากสุด"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "หยุดการทำงานของ torrent ทั้งหมดชั่วคราว"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "กลับมา Download ต่อ"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "มีรุ่นใหม่คือ version %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "มีรุ่นใหม่คือ version %s พร้อมให้ใช้\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "คุณกำลังใช้รุ่น %s และมีรุ่นใหม่รุ่น %s\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"คุณสามารถพบรุ่นใหม่ล่าสุดตลอดเวลาที่\n"
+"%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "ไม่ Download ทันที"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Download ทันที"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "เตือนวันหลัง"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "ประมาณ %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "รุ่นทดสอบ"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "รุ่น %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "ไม่สามารถเปิด %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "บริจาค"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "มีข้อมูลการทำงาน %s จำนวน"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "บันทึกข้อมูลการทำงานที่:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "ข้อมูลการทำงานถูกบันทึกแล้ว"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "ข้อมูลการทำงานถูกลบแล้ว"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "มี %s การปรับแต่ง"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr "แท่งสำหรับแสดงสถิติเป็นสีดำเสมอ (ต้อง restart เพื่อใช้)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "กำลังบันทึก"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "บันทึก file ที่ download ใหม่ที่:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "เปลี่ยน..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "ถามที่สำหรับบันทึกใหม่ทุกครั้ง"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "กำลัง download"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "มีไฟล์ที่สมบูรณ์และกำลัง Upload ให้ผู้ือื่น"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Upload ไฟล์ที่สมบูรณ์ที่มีให้ผู้อื่น: จนกระทั่งสัดส่วนการแบ่งถึง [_] เปอร์เซ็นต์, หรือเป็นเวลา [_] "
+"นาที, และหยุดเมื่อข้อใดข้อหนึ่งมาถึังก่อน"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Upload ไฟล์ที่สมบูรณ์ที่มีให้ผู้อื่นโดยไม่จำกัด"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "Upload ไฟล์ที่สมบูรณ์ไฟล์สุดท้ายที่มีให้ผู้อื่น: จนกระทั่งสัดส่วนการแบ่งถึง [_] เปอร์เซ็นต์"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "เครือข่าย"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "ค้นหา Port ที่ว่างอยู่:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "เริ่มที่ Port:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP ที่จะใช้รายงาน tracker:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr "(ไม่มีผลใดๆนอกจากคุณจะอยู่บนเครือข่ายเดียวกับ tracker)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr "ข้อควรระวัง: การเปลี่ยนค่าติดตั้งเหล่านี้สามารถทำให้ %s ไม่สามารถทำงานอย่างถูกต้องได้"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "ตัวเลือก"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "ค่า"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "ขั้นสูง"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "เลือก directory มาตรฐานสำหรับบันทึกไฟล์ที่ download"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "ไฟล์อยู่ใน \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "ยังไม่ได้ Download"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "ชื่อไฟล์"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "ความยาว"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "จำนวน Peers \"%s\" คน"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP address"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "ผู้ใช้"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "การเชื่อมต่อ"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/วินาที ดาวน์โหลด"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/วินาที อัพโหลด"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB ดาวน์โหลดแล้ว"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB อัพโหลดแล้ว"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% เสร็จ"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/วินาที การดาวน์โหลดของ Peer โดยประมาณ"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Peer ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "สนใจ"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "ปฎิเสธ"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "การอัพโหลดแบบใจดี"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "remote"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "local"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d ok"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d bad"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "ถูกแบน"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "ok"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "ข้อมูลสำหรับ \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "ชื่อ Torrent:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(Torrent แบบไม่มี Tracker)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "url ที่ประกาศ:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ",ในหนึ่งไฟล์"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ",ใน %d ไฟล์"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "ขนาดทั้งหมด:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "จำนวนชิ้น:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "ข้อมูล hash:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "บันทึกใน:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "ชื่อไฟล์"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_เปิด directory"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "ข้อมูล Torrent"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "ลบ torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "หยุด/ยกเลิก Torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", อัพโหลดไฟล์ที่สมบูรณ์เป็นเวลา %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", อัพโหลดไฟล์ที่สมบูรณ์โดยไม่มีกำหนดเวลา"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "เสร็จแล้ว, สัดส่วนการแชร์ไฟล์: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "เสร็จแล้ว, อัพโหลด %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "เสร็จสิ้น"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _info"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_ไฟล์ list"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_เปลี่ยน ที่อยู่"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "เริ่มต้นใหม่"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "เสร็จ"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "ลบทิ้ง"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "ยกเลิก"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "คุณแน่ใจหรือไม่ ที่จะลบ \"%s\"?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "สัดส่วนการแชร์สำหรับ torrent นี้คือ %d%%"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "คุณได้อัพโหลด %s สำหรับ torrent นี้"
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "ลบ Torrent นี้?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "เสร็จแล้ว"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "ลากเข้าไปใน list เพื่ออัพโหลดไฟล์ที่สมบูรณ์นี้"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "ไม่สำเร็จ"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "ลากเข้าไปใน list เพื่อทำต่อ"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "กำลังรอ"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "หยุดชั่วคราว"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "กำลังทำงาน"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "อัพโหลดขณะนี้: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "ิดาวน์โหลดขณะนี้: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "อัพโหลดก่อนหน้านี้: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "ดาวน์โหลดก่อนหน้านี้: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "สัดส่วนการแชร์: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s peers, %s seeds, ทั้งหมดจาก tracker: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% เสร็จสิ้น, %s เวลาที่เหลือ"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "อัตราดาวน์โหลด"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "อัตราอัพโหลด"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr " _ออกจากโปรแกรม"
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_เปิดไฟล์ torrent"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "เปิด torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "_สร้างไฟล์ torrent"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "_หยุด/เริ่ม"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "แสดง/ซ่อน torrents _ที่โหลดเสร็จแล้ว"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "_Log"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "_ตัวเลือก"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "_ช่วยเหลือ"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_เกี่ยวกับ"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "_บริจาค!!!"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_ไฟล์"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "ค้นหา torrents"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(หยุดแล้ว)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(หลายเท่า)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "ดาวน์โหลดเรียบร้อย %s ทำการติดตั้ง"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "ทำการติดตั้งใหม่ %s เดี๋ยวนี้?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "คุณต้องการออกจากโปรแกรม %s และติดตั้งโปรแกรมรุ่นใหม่, %s, เดี๋ยวนี้?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "ไปส่วนช่วยเหลือในหน้าเวปเพจ?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "คุณต้องการเอามันออก?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "เปิด torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "มีไฟล์อยู่แล้ว!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "มีไฟล์นี้อยู่แล้ว! \"%s\" . คุณต้องการจะเลือกชื่อไฟล์นี้ใหม่?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "เกิดข้อผิดพลาด %s"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "ขอบคุณมาก!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "เลือก..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "ขนาด Piece:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "ตรวจสอบขนาดไฟล์..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "เสร็จสิ้น"
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "เกิดข้อผิดพลาด!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d วัน"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 วัน %d ชั่วโมง"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d ชั่วโมง"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d นาที"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d วินาที"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 วินาที "
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s ช่วยเหลือ"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "คำถามที่ถูกถามบ่อย"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "เริ่ม"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "ไฟล์ทั้งหมด"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "สร้างโฟล์เดอร์ใหม่"
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "เลือกไฟล์"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "เลือกโฟล์เดอร์"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "ไม่สามารถ ทำการติดตั้งกับ OS นี้ได้"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "การทำงานปกติ"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/tlh.po b/po/tlh.po
new file mode 100644
index 0000000..7c2f4fc
--- /dev/null
+++ b/po/tlh.po
@@ -0,0 +1,2876 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2005-10-17 21:44-0700\n"
+"Last-Translator: chris curran <christophercurran@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr ""
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr ""
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr ""
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr ""
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr ""
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr ""
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr ""
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr ""
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "ghogh HablI' tlhegh"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr ""
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr ""
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr ""
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr ""
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr ""
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr ""
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr ""
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr ""
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Daq torrent 'el."
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "poSmoH torrent teywI' DaqvaD'e' bI'el."
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr ""
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr ""
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr ""
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr ""
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr ""
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr ""
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr ""
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr ""
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr ""
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr ""
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr ""
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr ""
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr ""
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr ""
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr ""
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr ""
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr ""
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr ""
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr ""
+
+#: bittorrent.py:822
+msgid "General"
+msgstr ""
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr ""
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr ""
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr ""
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr ""
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr ""
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr ""
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr ""
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr ""
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr ""
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr ""
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr ""
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr ""
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr ""
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr ""
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr ""
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr ""
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr ""
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr ""
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr ""
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr ""
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr ""
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr ""
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr ""
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr ""
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr ""
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr ""
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr ""
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr ""
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr ""
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr ""
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr ""
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr ""
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr ""
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr ""
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr ""
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr ""
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr ""
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr ""
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr ""
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr ""
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr ""
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr ""
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr ""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr ""
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr ""
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr ""
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ""
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ""
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr ""
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr ""
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr ""
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr ""
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr ""
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr ""
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr ""
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr ""
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr ""
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr ""
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ""
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ""
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr ""
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..995bab2
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,2842 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 13:11-0800\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Python %s veya daha güncel bir sürüm kurun"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "iptal edildi, kullanmayın"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Başka bir %s uygulaması ile iletişim başarısız oldu fakat bir uygulama çalışıyor gözüküyor."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Tüm %s pencerelerini kapatmak problemi çözebilir."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s halen çalışıyor"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Başka bir %s uygulaması ile iletişim başarısız oldu."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s veya gaha güncel bir sürüm gereklidir."
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "yeniden sıralamak için sürükle"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "Menü için sağ tıklayın"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "çevirmeli"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/kablo 128k ve üstü"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/kablo 256k ve üstü"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL/kablo 768k ve üstü"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Torrent URL adresini girin"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Açılacak torrent dosyasının URL adresini girin:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Maksimum gönderme hızı:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Çalışan tüm torrentleri geçici olarak durdur"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "İndirmeye devam et"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Yeni %s sürümü mevcut"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "%s sürümünden daha yeni bir sürüm sunuldu.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "%s kullanıyorsunuz; en son sürüm ise %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "En son sürümü buradan temin edebilirsiniz \n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "_Daha sonra indir "
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Şimdi indir"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "Daha sonra hatırlat"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "%s hakkında"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Beta"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "%s sürümü"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "%s açılamıyor"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Bağış yap"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s Etkinlik Günlüğü"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Günlüğü kaydet:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "Günlük kaydedildi"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "Günlük temizlendi"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s Ayarları"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Genel"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Windows açılınca BitTorrent'i başlat"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Sistem tepsisine küçült"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "İlerleme çubuğu metni her zaman siyah\n(yeniden başlatma gerekir)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Kaydediyor"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Yeni indirilenleri buraya kaydet:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Değiştir..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Her yeni yükleme için kayıt yerini sor"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "İndiriliyor"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Yeni torrent'e başlarken:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Yer açmak için, çalışan başka bir torrent dosyasını durdur"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "Diğer çalışan Torrent'leri durdurma"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "Her seferinde sor"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Kaynak durumunda"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Tamamlanan torrent'ler için kaynak ol: paylaşım oranı %[_] oluncaya kadar veya [_] dakika boyunca, hangisi önce gerçekleşirse."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Süresiz olarak kaynak ol"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Son tamamlanan torrent için kaynak ol: paylaşım oranı %[_] oluncaya kadar."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Ağ"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Uygun bağlantı noktası ara:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "başlangıç bağlantı noktası:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Otomatik bağlantı noktası eşlemesini devreye sok"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "İzleyiciye rapor edilecek IP:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(İzleyici ile aynı yerel ağ içerisinde\n olmadığınız sürece bir etkisi yok)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"UYARI: Bu ayarların değiştirilmesi\n%s'in düzgün çalışmamasına neden olabilir."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Seçenek"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Değer"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Gelişmiş"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Varsayılan indirme dizinini seç"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "%s kısayolu kaldırılamadı."
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "\"%s\" de bulunan dosyalar"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Hiçbir zaman"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Asla indirme"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Normal"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Normal indir"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "İlk"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "İlk yükle"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Dosya adı"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Uzunluk"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "İndirme"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "hiçbir zaman"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "ilk"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "\"%s\" için eşler"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP adresi"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "İstemci"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Bağlantı"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s aşağı"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s yukarı"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB indirildi"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB gönderildi"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% tamamlandı"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s tahmini eş indirme"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Eş ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "İlgili"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Boğuldu"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Reddedildi"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "İyimser yükleme"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "uzak"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "yerel"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "kötü eş"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d tamam"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d kötü"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "yasaklı"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "tamam"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "\"%s\" için bilgi"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrent adı:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(izleyicisiz torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Url duyur:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", bir dosyada"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", %d dosyada"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Toplam boyut:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Parçalar:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Hesaba dayalı adres bilgisi:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Kaydet:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Dosya adı:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "Dizini _aç"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "_file listesini göster"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent bilgisi"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Torrent'i kaldır"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Torrent'i iptal et"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", %s için kaynak olacak"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", süresiz olarak kaynak olacak."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Bitti, paylaşım oranı: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Bitti, %s yüklendi"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Bitti"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Torrent _bilgisi"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "Dosya _listesi"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Eş listesi"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Konumu değiştir"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Sürekli kaynak bul"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "_Yeniden başlat"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Bitir"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Kaldır"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "Bitir_meden durdur"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "\"%s\": Kaldırmak istediğinize emin misiniz?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Bu torrent için paylaşım oranınız %d%%."
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Bu torrent için %s yükleme yaptınız."
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Bu torrent'i kaldır?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Bitti"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "kaynak olmak için listeye sürükleyin"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Başarısız"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "kabul etmek için listeye sürükleyin"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Bekliyor"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Duraklatıldı"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Çalışıyor"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Şu anki yükleme: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Şu anki indirme: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Önceki yükleme: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Önceki indirme: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Paylaşım oranı: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s eş, %s kaynak. İzleyicideki toplam: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Dağıtık kopyalar: %d; Sonraki: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "Parçalar: %d toplam, %d tamamlanan, %d parçalı, %d aktif (%d boş)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d hatalı parça + atılan talepler içinde %s"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "%.1f%% tamamlandı, kalan %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "İndirme hızı"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Yükleme hızı"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "Geçerli Değil"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s başladı"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "Çık"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "_Çık"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "Torrent dosyası aç"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "Torrent _URL aç"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "Yeni torrent yap"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "Duraklat/Oynat"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "Bitmiş torrentleri Göster/Gizle"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "Pencereyi sığacak biçimde yeniden boyutlandır"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "Günlük"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "Ayarlar"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "Yardım"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "Hakkında"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "Bağış yap"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "Dosya"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "Görünüm"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Torrent ara"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(durduruldu)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(çoklu)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Halen %s yükleyicisini indiriyor"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "Yeni %s şimdi kurulsun mu?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"%s uygulamasından çıkmak ve yeni sürüm olan %s uygulamasını kurmak istiyor musunuz?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s yardımı \n%s adresinde\nŞimdi oraya gitmek ister misiniz?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "Yardım web sayfasını ziyaret etmek istiyor musunuz?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "Listede bir tane tamamlanmış torrent var."
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Onu kaldırmak istiyor musunuz?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Listede %d adet tamamlanmış torrent var."
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "Hepsini kaldırmak istiyor musunuz?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "Tamamlanmış bütün torrentler kaldırılsın mı?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "Tamamlanmış torrent yok"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Kaldırılacak tamamlanmış torrent yok."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Torrent aç:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "Kayıt yerini değiştir"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "Dosya var!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "\"%s\" zaten var. Farklı bir dosya adı seçmek istiyor musunuz?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Kaydetme yeri"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "Dizin var!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"\"%s\" zaten var. Varolan dizin içerisinde özdeş ikinci bir dizin oluşturmak ister misiniz?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(global mesaj): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s Hata"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+"Birden fazla hata oluştu. Hata günlüğünü görmek için Tamam düğmesine tıklayın."
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "Çalışan torrent durdurulsun mu?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"\"%s\"ları başlatma üzeresiniz. Çalışan başka bir Torrent'i durdurmak istiyor musunuz?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Bağış yaptınız mı?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "\"%s\" uygulamasının yeni sürümüne hoş geldiniz. Bağış yaptınız mı?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "Teşekkürler!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Bağış için teşekkürler! Yeniden bağış yapmak için \"Yardım\" menüsünden \"Bağış Yap\" başlığını seçin."
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "TorrentQueue başlatılamadı, hatalar için yukarıya bakın."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrent dosya oluşturucusu %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Bu dosya/dizin için torrent dosyası oluştur:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Seç..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Dizinler toplu iş torrentlerine dönüşecek)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Parça boyutu:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "İzleyici kullan:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "_DHT kullan:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Düğümler (opsiyonel):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Yorumlar:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Yap"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "Ana Bilgisayar"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "Bağlantı Noktası"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Torrentler oluşturuluyor..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Dosya boyutları kontrol ediliyor..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Kaynak bulmaya başla"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "oluşturuluyor"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Tamamlandı."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Torrentlerin oluşturulması tamamlandı."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Hata!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Torrentlerin oluşturulmasında hata:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "GTK %s veya yenileri gerekmekte"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d gün"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 gün %d saat"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d saat"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d dakika"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d saniye"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 saniye"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s Yardım"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Sıkça Sorulan Sorular:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Git"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Varolan bir klasör seç..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Tüm Dosyalar"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrentler"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Yeni bir klasör oluştur..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Bir dosya seç"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Bir klasör seç"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Kaydedilmiş durum yüklenemedi:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "UI durumu kaydedilemedi:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Geçersiz durum dosyası içerikleri"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "\"%s\" dosyasını okuma hatası"
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "durum tamamen geri yükelenemiyor"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Geçersiz durum dosyası (birden fazla giriş)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "\"%s\" içerisindeki dosya bozulmuş, torrent tamir edilemiyor"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(infohash uyuşmuyor)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Geçersiz durum dosyası (hatalı giriş)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Hatalı UI durum dosyası"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Hatalı UI durum dosyası sürümü"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Desteklenmeyen UI durum dosyası sürümü (daha yeni bir istemci sürümünden mi?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Önbelleğe alınmış %s dosyası silinemiyor:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Bu geçerli bir torrent dosyası değil. (%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+"Bu torrent (ya da aynı içeriğe sahip başka bir tanesi) halen çalışıyor."
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+"Bu torrent (ya da aynı içeriğe sahip başka bir tanesi) halen çalışmak için bekliyor."
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent %d bilinmeyen durumunda"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "Dosyaya yazamıyor"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+"istemci yeniden başlatıldığında, torrent doğru bir şekilde yeniden başlatılmayacak"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Aynı anda %d torrentden daha fazlası çalışamaz. Daha fazla bilgi için %s adresindeki SSS'a bakın."
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Torrent başlatılmıyor zira çalışmayı bekleyen başka torrentler de var ve bu torrent, kaynak bulmanın ne zaman durdurulacağına ilişkin ayarları zaten karşılıyor."
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Torrent başlatılmıyor zira en son tamamlanan torrent için kaynak bulmanın ne zaman durdurulacağına ilişkin ayarları zaten karşılıyor."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "%s adresinden son sürüm alınamıyor"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Yeni sürüm karakter dizgesi \"%s\" bilgisinden ayrıştırılamıyor"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "%s %s yükleyicisini kaydetmek için uygun bir geçici dizin bulunamadı."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "%s %s yükleyicisi için kullanılabilir bir torrent dosyası yok."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s kurulum dosyası yarım, eksik veya bozuk. "
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Bu işletim sistemi üzerinde yükleyici çalıştırılamıyor"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Torrent yok"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "İndirmeye başlıyor"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Normal çalışıyor"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "İndirme hızı düşük olabilir:\nMuhtemelen firewall/NAT arkasındasınız."
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "İnternet bağlantısını kontrol edin."
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"hızlı devam etme bilgisi ve GUI durumu gibi değişken verilerin kaydedildiği dizin. Bittorrent yapılandırma dizininin alt dizini olan 'data' dizini varsayılan dizindir."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"yerel dosya sisteminde kullanılacak karakter kodlaması. Boş bırakıldığında, otomatik olarak bulunacaktır. Otomatik bulma işlemi, 2.3'ten küçük python sürümleri altında çalışmaz."
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Kullanılacak ISO Dil kodu"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"izleyiciye rapor edilecek ip (izleyici olarak aynı yerel ağda olmadığınız sürece hiçbir etkisi yoktur)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"istemcinin yerel olarak dinlediğinden farklı ise herkese görünen bağlantı noktası numarası"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+"dinlenilecek en düşük bağlantı noktası numarası, eğer kullanılamaz ise yukarı doğru artar"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "dinlenilecek en yüksek bağlantı noktası"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "yerel olarak bağlanacak ip"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "gösterilen bilgilerin güncelleştirmeleri arasındaki saniye"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "daha fazla eş talepleri arasında beklenilecek dakika"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "yeniden talep yapılmayacak minimum eş sayısı"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "yeni bağlantıların başlatılmasının durdurulacağı eş sayısı"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "tamamlanmamış giden bağlantıların maksimum sayısı"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"izin verilecek en fazla bağlantı sayısı, bundan sonra yeni gelen bağlantılar derhal kapatılacaktır"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "diskteki adreslerin kontrol edilip edilmeyeceği"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "Yükleme için maksimum kB/s, 0 sınırsız anlamına gelir"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "ekstra iyimser boğulmamalarla, doldurulacak yükleme sayısı "
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"çok dosyalı torrentde bir anda açık tutulabilecek maksimum dosya sayısı, 0 sınırsız anlamına gelir. Dosya tanımlayıcısı kalmaması problemini engellemek için kullanılır."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"İzleyicisiz bir istemci başlat. İzleyicisiz torrentleri indirebilmek için bu etkinleştirilmeli."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+"keepalive (canlı tut) mesajı göndermeleri arasında beklenilecek saniye sayısı"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "istek başına kaç byte sorgulanmalı."
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"hat üzerinden kabul edeceğiniz maksimum ön ek kodlaması uzunluğu - büyük değerler bağlatının kopmasına neden olur."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+"hiçbir şeyin alınmadığı yuvaların kapatılması arasında beklenilecek saniye"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+"herhangi bir bağlantının zaman aşımına uğrayıp uğramadığının kontrolü arasında beklenilecek saniye"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"eşlere gönderilecek maksimum dilim uzunluğu, daha büyük bir talep alınırsa bağlantıyı kapat"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"güncel yükleme ve indirme hızlarının tahmin edileceği maksimum zaman aralığı"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "yürürlükteki kaynak oranının tahmin edileceği maksimum zaman aralığı"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"eğer başarısız olurlarsa duyuruları yeniden deneme arasında beklenecek maksimum süre"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"yarı kalıcı olarak boğulmuş olduğu varsayılmadan önce, bir bağlantıdan veri gelmesinin bekleneceği saniye"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "rastgeleden en seyrek olan ilke geçilecek indirme sayısı"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "bir defada ağ ara belleklerine kaç byte yazılmalı"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"yanlış veri gönderen, hata sonucu ya da kasten saldırgan eşlerin adreslerinden artık bağlantıları reddet"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "aynı IP adresine sahip birden fazla eşe bağlanma"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"eğer sıfırdan farklı ise, eş bağlantıları için TOS seçeneğini bu değere ayarla"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"dosya okumalarını oldukça yavaşlatan, BSD libc içindeki bir hatayı atlamayı etkinleştir."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "izleyici bağlantılarında kullanılmak üzere HTTP vekil sunucu adresi"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "RST ile bağlantıları kapat ve TCP TIME_WAIT durumundan sakın"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Ağ bağlantıları için Twisted ağ kütüphanelerini kullan. 1 twisted kullan, 0 twisted kullanma, -1 otomatik algıla ve twisted tercih et anlamına gelir."
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"torrentdeki varsayılan adı ezerek, onu farklı kaydetmek için kullanılacak dosya adı (tek dosyalı torrentler için) veya dizin adı (toplu iş torrentleri için). Aynı zamanda --save_in başlığına bakın, eğer hiçbiri belirtilmemişse, kullanıcıya kayıt yeri sorulacaktır"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "gelişmiş kullanıcı arabirimini göster"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"kaynak işlemi durdurulmadan önce, tamamlanmış bir torrentin kaynak edileceği maksimum dakika sayısı"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"kaynak işlemi durdurulmadan önce elde edilmesi gereken yüzde cinsinden minimum gönderme/indirme oranı. 0, sınırsız anlamına gelir."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"son torrentin kaynak işlemi durdurulmadan önce elde edilmesi gereken yüzde cinsinden minimum gönderme/indirme oranı. 0, sınırsız anlamına gelir."
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Tamamlanan her torrenti süresiz olarak kaynakla (kullanıcı iptal edene kadar)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "Son torrenti süresiz olarak kaynakla (kullanıcı iptal edene kadar)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "indiriciyi duraklama durumunda başlat"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"kullanıcı başka bir torrenti elle başlatmaya çalıştığı zaman uygulamanın nasıl davranacağını belirler: değiştir\", çalışan torrenti her zaman yenisiyle değiştir, \"ekle\", çalışan torrenti her zaman paralel olarak ekle ve \"sor\" ise her seferinde kullanıcıya sor anlamına gelir."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "BitTorrent'i görev çubuğunda başlat"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"http sürüm kontrolü tarafından sağlanan sürümü geçersiz kılıp, sürüm kontrolü hata ayıklama kipini devreye sok"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"sürüm kontrolünde kullanılan mevcut sürümü geçersiz kılıp, sürüm kontrolü hata ayıklama kipini devreye sok"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"pencere boyutu ve posizyonunu GENİŞLİKxYÜKSEKLİK+XKONUM+YKONUM olarak girin."
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"torrentin içindeki varsayılan adı hükümsüz sayarak, torrenti farklı kaydetmek için dosya adı (tek dosyalı torrentler için) veya dizin adı (toplu torrentler için). Aynı zamanda --save_in'e bakın"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"Bir defada izin verilen maksimum yükleme sayısı. -1, --max_upload_rate değerine dayanan makul (umulan budur) bir rakam anlamına gelir. Otomatik değerler yalnızca aynı anda tek bir torrent çalışırken anlamlıdır."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"torrent içeriklerinin kaydedileceği yerel dizin. Dosya (tek dosyalı torrentler) veya dizin (çok dosyalı torrentler) torrent dosyasında belirtilen varsayılan isim kullanılarak bu dizin altında oluşturulacaktır. Aynı zamanda --save_as'e bakın."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "indirilen dosyaların kaydedileceği yerin sorulup sorulmayacağı"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"torrentlerin, --saveas_style tarafından belirlenmiş bir ad ile kaydedileceği yerel dizin. Eğer bu boş bırakılırsa her bir torrent, ilişkin .torrent dosyasının dizini altına kaydedilir."
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "torrent dizinini yeniden tarama sıklığı, saniye olarak"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"bir torrent'in farkında vardıktan sonra onu başlatmadan önce, izleyiciyle yarışmaktan kaçınmak için bu kadar saniye bekle"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Torrent indirmeleri nasıl adlandırılmalı: 1: torrent dosyasının adını kullan (eksi .torrent); 2: torrent dosyası içinde kodlanmış adı kullan; 3: torrent dosyasının adına (eksi .torrent) sahip bir dizin oluştur ve o dizin içerisine torrent dosyası içinde kodlanmış ad ile kaydet; 4: eğer torrent dosyasının adı (eksi .torrent) ve torrent dosyasının içinde kodlanmış ad özdeş ise o adı kullan (stil 1/2), değilse stil 3'teki gibi ara bir dizin oluştur; DİKKAT: seçenek 1 ve 2 uyarı vermeden dosyaların üzerine yazma kabiliyetine sahip olup, güvenlik problemleri oluşturabilirler."
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+"her bir torrent için torrent içeriklerinin veya tam yolun gösterilip gösterilmeyeceği"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ".torrent dosyalarının aranacağı dizin (yarı-özyineli)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "diagnostik bilgisinin stdout'a gösterilip gösterilmeyeceği"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "parça boyutunun ayarlanacağı ikinin üssü"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "varsayılan izleyici adı"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"eğer yanlışsa, izleycisiz bir torrent oluştur, URL duyurmak yerine <ip>:<bağlantı noktası> formunda güvenilir bir düğüm veya yönlendirme tablonuzdan bazı düğümleri çekmek için boş bir karakter dizgesi kullan"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "indirme tamamlandı!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<bilinmiyor>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "%d:%02d:%02d içinde tamamlanıyor"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "indirme başarıyla tamamlandı"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB yükleme / %.1f MB indirme)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB yükleme / %.1f MB indirme)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d şimdi görüldü, ek olarak %d dağıtılmış kopya (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d dağıtılmış kopya (sonraki: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d şimdi görüldü"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "HATA:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "kaydediyor:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "dosya boyutu:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "tamamlanan yüzde:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "kalan süre:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "şuraya indir:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "indirme hızı:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "yükleme hızı:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "paylaşım derecesi:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "kaynak durumu:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "eş durumu:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+"--save_as ve --save_in anahtarlarının her ikisini birden belirtemezsiniz"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "kapatılıyor"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Yapılandırmanın okunmasında hata:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ".torrent dosyasının okunmasında hata:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "bir .torrent dosyası belirtmelisiniz"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "Metin modu GUI başlatması başarısız oldu, devam edemiyor."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Bu indirme arabirimi, Python'un doğal Windows portunda maalesef yer almayan, standart Python modülü olan \"curses\" modülünü gerektirir. Bununla birlikte Python'un tüm Win32 sistemlerinde çalışan Cygwin portu için mevcuttur (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "İndirme işlemi için hala \"bittorrent-cosole\"u kullanabilirsiniz."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "dosya:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "boyut:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "hedef:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "ilerleme:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "durum:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "dl hızı:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "ul hızı:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "paylaşım:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "kaynaklar:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "eşler:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d şimdi görüldü, ek olarak %d dağıtılmış kopya(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "hata(lar):"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "hata:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP Yükleme İndirme Tamamlandı Hız"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "%d parça indiriliyor, %d parça kalan, %d parçanın %d tanesi tamamlandı"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Çalışma esnasında bu hatalar oluştu:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Kullanım: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "%s için eski duyuru: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "torrent yok"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "SİSTEM HATASI - İSTİSNA ÜRETİLDİ"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Uyarı:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "dizin değil"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "hata: %s\nrun with no args for parameter explanations"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nİSTİSNA:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"İndirme işlemi için hala \"btdownloadheadless.py\"yi kullanabilirsiniz."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "eşlere bağlanıyor"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "%d:%02d:%02d içinde ETA"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Boyut"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Yükleme"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Toplamlar:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "hata:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nparametre açıklamaları için argümansız çalıştır"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+".torrent dosyasına konulmak üzere, kişiler tarafından okunabilen opsiyonel yorum"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "torrent için opsiyonel hedef dosyası"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Kullanım: %s [TORRENT DOSYASI [TORRENT DOSYASI ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "hash bilgisi: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "dosya adı: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "dosya boyutu:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "dosyalar:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "dizin adı: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "arşiv boyutu:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "izleyici duyuru url'si: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "izleyicisiz düğümler:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "yorum:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Pzt"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Sal"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Çar"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Per"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Cum"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Cmt"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Paz"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Oca"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Şub"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Mar"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Nis"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "May"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Haz"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Tem"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Ağu"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Eyl"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Eki"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Kas"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Ara"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Sıkıştırıldı: %i Açıldı: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Seçenekler kalıcı olarak kaydedilemedi:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "%s dosyası çalışan diğer bir torrente ait"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "%s dosyası var, ancak geçerli bir dosya değil"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Desteklenmeyen hızlı sürdürme dosya formatı, diğer bir istemci sürümünden olabilir mi?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Hızlı sürdürme verisini okuyamadı:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "Cevap dosyasında hatalı veri - toplam çok küçük"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "Cevap dosyasında hatalı veri - toplam çok büyük"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "varolan dosya kontrol ediliyor"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "Hatalı hızlı sürdürme bilgisi (dosyalar daha fazla veri içeriyor)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Hatalı hızlı sürdürme bilgisi (geçersiz değer)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "veri disk üzerinde bozuldu - belki çalışan iki kopyaya sahipsinizdir?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "eklendi \"%s\""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "indiriyor"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Yapılandırma dosyasını yeniden okuyor"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Bir defada birden fazla torrent üretirken .torrent dosyasının adını belirleyemezsiniz "
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "\"%s\" dosya sistemi kodlaması bu sürümde desteklenmiyor"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Dosya/dizin adı \"%s\", utf-8 (%s) kodlamasına dönüştürülemedi. Ya varsayılan dosya sistemi kodlaması \"%s\" hatalı ya da dosya adı geçersiz byte bilgileri içeriyor."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Dizini okuyamıyor"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "%s kalıdırılıyor (yeniden eklenecek)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**uyarı** %s hatalar içeriyor"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... başarılı"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "%s kaldırılıyor"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "kontrol tamamlandı"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "%s okunamıyor"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"%s\nindirilemiyor ya da açılamıyor\nTorrent dosyasını indirmek için bir internet göz atıcısı kullanmayı deneyin."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "İzleyici anonsu, başlatılmasından %d saniye sonra hala tamamlanamadı"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "İzleyiciye bağlanırken hata, gethostbyname başarısız oldu -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "İzleyiciye bağlanırken hata -"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "izleyiciden hatalı veri -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "izleyici tarafından reddedildi -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Torrent durduruluyor, zira hiçbir eşe bağlanılmadığından ötürü izleyici tarafından reddedildi."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "İzleyiciden mesaj:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "izleyiciden uyarı -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "%s adına güvenlik sebebiyle izin verilmedi"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "tekli/çoklu dosya karışımı"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "%s yoluna güvenlik sebebiyle izin verilmedi"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "geçersiz eş listesi"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "geçersiz duyuru aralığı"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "geçersiz min duyuru aralığı"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "geçersiz izleyici id'si"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "geçersiz eş sayısı"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "geçersiz \"son\" giriş"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Kullanım: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[SEÇENEKLER] [TORRENTDİZİNİ]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Seçenek olmayan bir argüman var ise bu argüman,\ntorrent_dir seçeneğinin değeri olarak ele alınır.\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[SEÇENEKLER] [TORRENTDOSYLARI]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "SEÇENEKLER] [TORRENTDOSYASI]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "argümanlar -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "bilinmeyen anahtar"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "komut satırı ayrıştırması başarısız oldu"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "%s seçeneği gerekli."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "En azından %d argümanı sağlamalı."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Çok fazla argüman - %d maksimum."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Dinlenecek bağlantı noktası."
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "en son idirici bilgisinin içerisinde tutulacağı dosya"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "bağlantıların kapatılacağı zaman aşımı"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "indiricilerin, yeniden duyurular arasında bekleyeceği saniye"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"eğer istemci bir rakam belirtmemişse, bilgi mesajı gönderilecek varsayılan eş sayısı"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+"herhangi bir bağlantının zaman aşımına uğrayıp uğramadığının kontrol edilmesi arasında beklenilecek zaman"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"bir indiricinin bir NAT'ın arkasında olup olmadığı kaç kere kontrol edilmeli (0 = kontrol etme)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "nat-kontrol sonuçlarının günlüğe kaydedilip kaydedilmeyeceği"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"bir önbelleğin bozuk olarak varsayılmasından ve boşaltılmasından önce beklenilecek saniye cinsinden minimum zaman"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"allowed_dir içindeki torrentlerin içinde bulunan özel anahtarların izleyici erişimini etkilemesine izin ver"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "HUP sinyalinin alınmasıyla günlüğün yeniden açılıp açılmayacağı"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"izleyicinin kök dizini yüklendiğinde bir bilgi sayfasının gösterilip gösterilmeyeceği"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "bilgi sayfasının yönlendirileceği bir URL"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "izin verilen dizinden isimlerin gösterilip gösterilmeyeceği"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"gözatıcı favicon.ico talep ettiğinde, geri döndürülecek x-icon verisini içeren dosya"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"ölü torrentleri zaman aşımına uğradıktan sonra sakla (dolayısıyla /scrape ve web sayfanızda görünmeye devam edecekler). Yalnızca allowed_dir etkinleştirilmediği zaman geçerlidir."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"dosyanız kainatta başka bir yerde var olabilir\nfakat ne yazık ki burada değil\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**uyarı** belirtilen favicon dosyası -- %s -- mevcut değil."
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**uyarı** durum dosyası %s bozuk; yeniden başlatılıyor"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Günlük Tutma Başlatıldı:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**uyarı** stdout'u günlük dosyasına yönlendiremiyor:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Günlük yeniden açıldı"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**uyarı** günlük dosyasını yeniden açamıyor"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"İstenen indirme, bu izleyici ile birlike kullanılmak için yetkilendirilmemiş."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "parametre açıklamaları için argümansız çalıştır"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Kapatılıyor:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Aynı torrentin iki ayrı örneği başlatılamaz"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "maxport, minport'dan daha az - kontrol edilecek bağlantı noktası yok"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Dinlenecek bağlantı noktası açılamadı: %s"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Dinlenecek bağlantı noktası açılamadı: %s"
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Bağlantı noktası aralıklarınızı kontrol edin."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "İlk açılış"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Hızlı sürdürme veriis yüklenemedi: %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"İzleyicisiz istemci ile izleyicisiz torrent indirme girişimi kapatıldı."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "indirme başarısız oldu:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"IO Hatası: Diskte yer kalmadı, veya o büyüklükte bir dosya oluşturulamıyor:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "IO hatası sonucu kapatıldı:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "OS hatası sonucu kapatıldı:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "Dahili istisna sonucu kapatıldı:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Hata sonucu kapatılırken ek hata:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Hatadan sonra hızlı sürdürme dosyası kaldırılamadı:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Hızlı sürdürme verisi yazılamadı:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "kapat"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Bu, dosya sistemi kodlamasını bulmayı desteklemeyen eski bir Python sürümü gibi görünüyor. 'ascii' olduğu varsayıldı."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python, dosya sistemi kodlamasını otomatik olarak bulamadı. Yerine 'ascii' kullanılacak."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Dosya sistemi kodlaması '%s' desteklenmiyor. Yerine 'ascii' kullanılacak."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Hatalı dosya yolu bileşeni:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Bu .torrent dosyası hatalı bir araçla oluşturulmuş ve yanlış kodlanmış dosya adlarına sahip. Bazı veya bütün dosya adları, .torrent dosyasını oluşturanın planladığından daha farklı görünebilir."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Bu .torrent dosyası hatalı bir araçla oluşturulmuş ve herhangi bir gerçek karaktere karşılık gelmeyen yanlış karakter değerlerine sahip. Bazı veya bütün dosya adları, .torrent dosyasını oluşturanın planladığından daha farklı görünebilir."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Bu .torrent dosyası hatalı bir araçla oluşturulmuş ve yanlış olarak kodlanmış dosya adlarına sahip. Kullanılan adlar hala doğru olabilir."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Yerel dosya sisteminde (\"%s\") kullanılan karakter seti bu torrentin dosya adındaki/adlarındaki karakterlerin tamamını temsil edemez. Dosya adları orijinalden değiştirildi."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Bu .torrent dosyası hatalı bir araçla oluşturulmuş ve en az 1 adet geçersiz dosya veya dizin adı içeriyor. Bununla birlikte bu tür bütün dosyalar 0 uzunluğuna sahip olarak işaretlenmekte ve dolayısıyla ihmal edilmektedir."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Kontrol yuvası oluşturulamadı: halen kullanımda"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Eski kontrol yuvasının dosya adı kaldırılamadı:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Kontrol yuvası oluşturulamadı:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Komut gönderilemedi:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "Açık bir bağlantı noktası bulunamadı!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "Uygulama veri dizini oluşturulamadı!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "BT'nin önceki kopyası düzgün olarak temizlenmedi. Devam ediliyor."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "sunucu yuvası kaybedildi"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..4688757
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,2888 @@
+# BitTorrent
+# Copyright (C) 2005 BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm <matt (dash) translations (at) bittorrent (dot) com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-30 13:29-0800\n"
+"PO-Revision-Date: 2006-01-04 16:39-0800\n"
+"Last-Translator: Andrew Lahush <alahush@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Інсталізуй версію Пітону %s або вищу"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235
+#: BitTorrent/defaultargs.py:237 bittorrent-console.py:295
+#: bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "Диприкатовано - Не вживайте."
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Біт Торент не 3міг з'єднатися 3 %s процесом(ми)але один напевно працюєю"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Біт Торент закриє %s вікнів. Це може зупенити цю проблему."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s включений."
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Не можливо 3єднатись з іншим %s процесом."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "PyGTK %s або новішого потрібно."
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "для зміни порядку перетяніть "
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "праве клацання для контекстного меню"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "модемне з'єднання"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cable 128Кбіт"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cable 256Кбіт"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768Кбіт"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "Т1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "Т1/Е1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "Е1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "Т3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "ОС3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Введіть URL торенту"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Введіть URL торент файла, що відкривається"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Максимальна норма викачування"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Тимчасово зупинити усі торенти, що виконуються"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Продовжити викачування"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Доступна нова %s версія"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Нова версія %s доступна.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Ви вікорустовиєте версію %s, а нова версія - %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid ""
+"You can always get the latest version from \n"
+"%s"
+msgstr ""
+"Ви завжди можете отримати нову версію з\n"
+" %s "
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Викачати _піздніше"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Викачати _зараз"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Нагадати піздніше"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Про %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Бета"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Версія %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Неможливо відкрити %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Дарую"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s журнал активності"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Зберегти журнал як:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "журнал збережено"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "журнал очищено"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Параметри %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Генеральні"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Починати Біт Торент разом з Віндовс"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Спустити до состемного блоку внизу (system tray)"
+
+#: bittorrent.py:837
+msgid ""
+"Progress bar text is always black\n"
+"(requires restart)"
+msgstr ""
+"Текст індикатору прогресу завжди чорний\n"
+"(необхідний перезапуск)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Збереження"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Зберегати нови викачки у:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Змінити..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Питати де зберегати кожну викачку"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Викачування"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Коли починається новнй торент."
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Зпиніть інший торент щоб зобити місце "
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "Не спиніть інші включені торенти."
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Запитуватись щораз"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Надання"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] "
+"minutes, whichever comes first."
+msgstr ""
+"Надавати повні торенти: доки розподіл трафіку досягне [_] відсотків, або на "
+"[_] хвилин, що відбудеться поперше."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Надавати необмежено"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Надавати останній повний торент: коли розподіл трафіку досягне [_] відсотків."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Мережа"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Шукати вільний порт:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "починаючи з порту:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr ""
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "IP для повідомлення трекеру:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\n"
+"same local network as the tracker)"
+msgstr ""
+"(Не має ефекту якщо ви знаходитесь\n"
+" у одній локальній мережі з трекером)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\n"
+"prevent %s from functioning correctly."
+msgstr ""
+"Засторога: Зміна цис настроювань може\n"
+" привести %s неполадки в програмію"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Опція"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Значення"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "ПОВНИЙ КОНТРОЛЬ"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Оберіть директорію для завантаження за умовчанням"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Біт Торент не зміг стери скорочення - %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Файлн в \"%s\""
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Ніколи"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Ніколи не загружай"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Нормальний"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "загружай Нормально"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Перший"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "загружай Перший "
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Імя ФАЙЛУ"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Розмір"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "загружання"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "Ніколи"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "перший"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Друзі для \"%s\""
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Адресса"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Клієнт"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Підключення"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s вниз"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s вверх"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB загружено"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB вигружено"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% виповнені"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s est. загруження побратимів"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "Індентифікація Друга"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Інтерисований"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Задушений"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Зарізаний"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "ОПТ вигруження"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "З відстанї"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "Рідні"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "друг-ідіот"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d OK"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d поганих"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "ВИГНАНИЙ"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "OK"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Інформація для \"%s\""
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Ім.я"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "( Торент без трекера )"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Вебсайт торрента"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ". є один файл"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ". є %d файлів"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Повний розмір"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "ЧастиниЖ"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Інформація:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Загрузи в:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Імя:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Відкрий місце"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Показати _лист сторінок"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Інформація про торент"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Зняти Торент"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Про торент"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", посадиться після %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", посадиться коли рак на горі свисне."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr ""
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr ""
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr ""
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr ""
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr ""
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr ""
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr ""
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr ""
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr ""
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr ""
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr ""
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr ""
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr ""
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr ""
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr ""
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr ""
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr ""
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr ""
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr ""
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr ""
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr ""
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Призупинено"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr ""
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr ""
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr ""
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr ""
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr ""
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr ""
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr ""
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr ""
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr ""
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr ""
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr ""
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr ""
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr ""
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr ""
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr ""
+
+#: bittorrent.py:2791
+msgid "E_xit"
+msgstr ""
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr ""
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr ""
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr ""
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr ""
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr ""
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr ""
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr ""
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr ""
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr ""
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr ""
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr ""
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr ""
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr ""
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr ""
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr ""
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr ""
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr ""
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr ""
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+
+#: bittorrent.py:3181
+#, python-format
+msgid ""
+"%s help is at \n"
+"%s\n"
+"Would you like to go there now?"
+msgstr ""
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr ""
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr ""
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr ""
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr ""
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr ""
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr ""
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr ""
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr ""
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr ""
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr ""
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr ""
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr ""
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr ""
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr ""
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate "
+"directory inside the existing directory?"
+msgstr ""
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr ""
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr ""
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr ""
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr ""
+
+#: bittorrent.py:3688
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent "
+"as well?"
+msgstr ""
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr ""
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr ""
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" "
+"menu."
+msgstr ""
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr ""
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr ""
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr ""
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr ""
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr ""
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr ""
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr ""
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr ""
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr ""
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr ""
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr ""
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr ""
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr ""
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr ""
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr ""
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr ""
+
+#: maketorrent.py:527
+msgid "building "
+msgstr ""
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr ""
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr ""
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr ""
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr ""
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr ""
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr ""
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr ""
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr ""
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr ""
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr ""
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr ""
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr ""
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr ""
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr ""
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr ""
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr ""
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223
+#: BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309
+#: BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331
+#: BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at "
+"%s."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this "
+"one already meets the settings for when to stop seeding."
+msgstr ""
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop "
+"seeding the last completed torrent."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr ""
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr ""
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Нормальне виконання"
+
+#: BitTorrent/StatusLight.py:20
+msgid ""
+"Downloads may be slow:\n"
+"Probably firewalled/NATted"
+msgstr ""
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI "
+"state is saved. Defaults to subdirectory 'data' of the bittorrent config "
+"directory."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, "
+"autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local "
+"network as the tracker)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens "
+"on locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections "
+"will be immediately closed"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 "
+"means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download "
+"trackerless torrents."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values "
+"get the connection dropped."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request "
+"is received"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download "
+"rates"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's "
+"semi-permanently choked"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally "
+"hostile peers that send incorrect data"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, "
+"0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping "
+"seeding"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping "
+"seeding the last torrent. 0 means no limit."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start "
+"another torrent: \"replace\" means always replace the running torrent with "
+"the new one, \"add\" means always add the running torrent in parallel, and "
+"\"ask\" means ask the user each time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version "
+"check debugging mode"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) "
+"to save the torrent as, overriding the default name in the torrent. See also "
+"--save_in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) "
+"reasonable number based on --max_upload_rate. The automatic values are only "
+"sensible when running one torrent at a time."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-"
+"file torrents) or directory (batch torrents) will be created under this "
+"directory using the default name specified in the .torrent file. See also --"
+"save_as."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by "
+"--saveas_style. If this is left empty each torrent will be saved under the "
+"directory of the corresponding .torrent file"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid "
+"race with tracker"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus ."
+"torrent); 2: use name encoded IN torrent file; 3: create a directory with "
+"name OF torrent file (minus .torrent) and save in that directory using name "
+"encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and "
+"name encoded IN torrent file are identical, use that name (style 1/2), "
+"otherwise create an intermediate directory as in style 3; CAUTION: options "
+"1 and 2 have the ability to overwrite files without warning and may present "
+"security issues."
+msgstr ""
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr ""
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use "
+"reliable node in form of <ip>:<port> or an empty string to pull some nodes "
+"from your routing table"
+msgstr ""
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr ""
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr ""
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr ""
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr ""
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr ""
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr ""
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr ""
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr ""
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr ""
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr ""
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr ""
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr ""
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr ""
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr ""
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr ""
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr ""
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr ""
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr ""
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr ""
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376
+#: BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr ""
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383
+#: BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr ""
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr ""
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr ""
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", "
+"which is unfortunately not available for the native Windows port of Python. "
+"It is however available for the Cygwin port of Python, running on all Win32 "
+"systems (www.cygwin.com)."
+msgstr ""
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr ""
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr ""
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr ""
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr ""
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr ""
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr ""
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr ""
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr ""
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr ""
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr ""
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr ""
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr ""
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr ""
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr ""
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr ""
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr ""
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr ""
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr ""
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr ""
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr ""
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr ""
+
+#: launchmany-console.py:66
+#, python-format
+msgid ""
+"error: %s\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid ""
+"\n"
+"EXCEPTION:"
+msgstr ""
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr ""
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr ""
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr ""
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr ""
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr ""
+
+#: launchmany-curses.py:296
+msgid ""
+"\n"
+"run with no args for parameter explanations"
+msgstr ""
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr ""
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr ""
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr ""
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr ""
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr ""
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr ""
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr ""
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr ""
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr ""
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr ""
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr ""
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr ""
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr ""
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr ""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr ""
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr ""
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr ""
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr ""
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr ""
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s "
+"may have crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed "
+"last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have "
+"crashed last time it was run."
+msgstr ""
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549
+#: BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not "
+"process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr ""
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple "
+"torrents at once"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr ""
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the "
+"assumed filesystem encoding \"%s\" is wrong or the filename contains illegal "
+"bytes."
+msgstr ""
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not "
+"correspond to characters."
+msgstr ""
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr ""
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr ""
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr ""
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr ""
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr ""
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr ""
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr ""
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n"
+"%s\n"
+"Try using a web browser to download the torrent file."
+msgstr ""
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr ""
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected "
+"to any peers. "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr ""
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr ""
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr ""
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr ""
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr ""
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr ""
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr ""
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr ""
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr ""
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr ""
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr ""
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr ""
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr ""
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr ""
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr ""
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr ""
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr ""
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr ""
+
+#: BitTorrent/parseargs.py:28
+msgid ""
+"[OPTIONS] [TORRENTDIRECTORY]\n"
+"\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\n"
+"of the torrent_dir option.\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr ""
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr ""
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr ""
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr ""
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr ""
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr ""
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr ""
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr ""
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr ""
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr ""
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not "
+"specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr ""
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr ""
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in "
+"subdirectories of directories that have no .torrent files themselves). If "
+"set, torrents in this directory show up on infopage/scrape whether they have "
+"peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr ""
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr ""
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs "
+"(0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP "
+"proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to "
+"download the torrent file"
+msgstr ""
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape "
+"and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid ""
+"your file may exist elsewhere in the universe\n"
+"but alas, not here\n"
+msgstr ""
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr ""
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr ""
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr ""
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr ""
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr ""
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr ""
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr ""
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr ""
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr ""
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr ""
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr ""
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr ""
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr ""
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr ""
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr ""
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr ""
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr ""
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr ""
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr ""
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr ""
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr ""
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr ""
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr ""
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr ""
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the "
+"filesystem encoding. Assuming 'ascii'."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. Some or all of the filenames may appear different from "
+"what the creator of the .torrent file intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character "
+"values that do not correspond to any real character. Some or all of the "
+"filenames may appear different from what the creator of the .torrent file "
+"intended."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly "
+"encoded filenames. The names used may still be correct."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all "
+"characters used in the filename(s) of this torrent. Filenames have been "
+"changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) "
+"of this torrent. Filenames have been changed from the original."
+msgstr ""
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 "
+"file with an invalid file or directory name. However since all such files "
+"were marked as having length 0 those files are just ignored."
+msgstr ""
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr ""
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr ""
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr ""
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr ""
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr ""
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr ""
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr ""
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr ""
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr ""
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr ""
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr ""
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr ""
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr ""
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr ""
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr ""
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr ""
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr ""
+
+#: khashmir/krpc.py:239
+msgid "socket error"
+msgstr ""
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..4791893
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,2868 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-26 14:11+0700\n"
+"Last-Translator: translate4me <olessia@translate4me.com>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\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"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "Hãy cài đặt Python phiên bản %s hay lớn hơn"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "bị phản đối, không được sử dụng"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr ""
+"Không thể liên lạc với quy trình %s khác, nhưng có thể một chương trình đang chạy."
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "Đóng tất cả các cửa sổ %s có thể sẽ sửa lỗi này."
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s đang chạy"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "Không thể liên lạc với quy trình %s khác."
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "Yêu cầu PyGTK phiên bản %s hay mới hơn"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "kéo để xếp lại thứ tự"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "nhấp chuột phải để hiển thị trình đơn"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "quay số"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "DSL/cáp 128k trở lên"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "DSL/cáp 256k trở lên"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "DSL 768k trở lên"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "Nhập Địa Chỉ Mạng"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "Nhập Địa Chỉ Mạng của một tập tin dòng cần mở:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "Tốc độ tải lên tối đa:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "Ngừng tạm thời các dòng đang chạy"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "Tiếp tục tải về"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "Có sẵn phiên bản %s mới"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "Có sẵn một phiên bản %s mới hơn.\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "Bạn đang sử dụng %s còn phiên bản mới là %s.\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "Bạn luôn có thể lấy phiên bản mới nhất từ\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "Tải về _sau "
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "Tải về _ngay bây giờ"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "_Nhắc nhở tôi sau"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "Giới thiệu về %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "Phiên bản sơ bộ dùng để chạy thử nghiệm"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "Phiên bản %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "Không thể mở %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "Tặng"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "Nhật ký Hoạt động %s"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "Lưu nhật ký vào:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "đã lưu nhật ký"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "đã xóa nhật ký"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "Thiết lập %s"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "Chung"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "Khởi chạy trình BitTorrent khi Windows khởi động"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "Thu nhỏ vào khay hệ thống"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "Văn bản trên thanh tiến trình luôn có màu đen\n(yêu cầu khởi động lại)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "Đang lưu..."
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "Lưu các tập tin mới tải về vào:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "Thay đổi..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "Yêu cầu vị trí cần lưu mỗi tập tin mới tải về"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "Đang tải về"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "Khi khởi chạy một dòng mới:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "_Ngừng một dòng đang chạy khác, để giải phóng chỗ"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "_Đừng ngừng dòng đang chạy khác"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "_Hỏi mỗi lần"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "Đang khởi tạo"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr ""
+"Khởi tạo các dòng hoàn tất: đến khi tỷ lệ chia sẻ lên tới [_] phần trăm, hoặc trong vòng [_] phút, bất kỳ điều kiện nào đến trước."
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "Khởi tạo vô hạn"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr ""
+"Khởi tạo dòng đã hoàn tất cuối cùng: đến khi tỷ lệ chia sẻ lên tới [_] phần trăm."
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "Mạng"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "Tìm kiếm cổng có sẵn:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "bắt đầu từ cổng: "
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "Cho phép sơ đồ cổng tự động"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "Địa chỉ IP cần thông báo cho công cụ theo dõi:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr ""
+"(Không có tác dụng nếu bạn không có trên\ncùng một mạng cục bộ với công cụ theo dõi)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr ""
+"CẢNH BÁO: Thay đổi thiết lập này\ncó thể ngăn cản %s thực hiện chức năng một cách chính xác."
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "Tùy chọn"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "Giá trị"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "Cao cấp"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "Chọn thư mục tải về mặc định"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "Không thể gỡ bỏ lối tắt: %s"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "Các tập tin trong « %s »"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "Không bao giờ"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "Không bao giờ tải về"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "Bình thường"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "Tải về bình thường"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "Trước tiên"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "Tải về trước"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "Tên tập tin"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "Độ dài"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "Tải về"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "không bao giờ"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "trước tiên"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "Đồng đẳng cho « %s »"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "Địa chỉ IP"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "Máy khách"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "Sự kết nối"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/giây tải xuống"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/giây tải lên"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "MB đã tải về"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "MB đã tải lên"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "% hoàn tất"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "Tốc độ ước lượng KB/giây tải xuống đồng đẳng"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "ID đồng đẳng"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "Quan tâm"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "Bị nghẽn"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "Bị từ chối"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "Tải lên thuận lợi"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "từ xa"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "cục bộ"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "đồng đẳng bị lỗi"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d được"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d lỗi"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "bị cấm"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "được"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "Thông tin cho « %s »"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Tên dòng:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(dòng không có công cụ theo dõi)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "Thông báo địa chỉ mạng:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ", trong một tập tin"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ", trong %d tập tin"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "Kích cỡ toàn bộ:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "Các phần:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "Thông tin Băm:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "Lưu vào:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "Tên tập tin:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "_Mở thư mục"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "Hiển thị _danh sách tập tin"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Thông tin dòng"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "Gỡ bỏ dòng"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "Hủy bỏ dòng"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ", sẽ khởi tạo trong vòng %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ", sẽ khởi tạo vô hạn."
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "Xong, tỷ lệ chia sẻ: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "Xong, %s đã tải lên"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "Xong"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "Thông tin _dòng"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "_Danh sách tập tin"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "_Danh sách đồng đẳng"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "_Thay đổi vị trí"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "_Khởi tạo vô hạn"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "Khởi động _lại"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "_Kết thúc"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "_Gỡ bỏ"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "_Hủy bỏ"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "Bạn có chắc là muốn gỡ bỏ « %s » không?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "Tỷ lệ chia sẻ của bạn cho dòng này là %d%%. "
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "Bạn đã tải %s lên dòng này. "
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "Gỡ bỏ dòng này?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "Đã kết thúc"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "kéo vào danh sách để khởi tạo"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "Thất bại"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "kéo vào danh sách để tiếp tục lại"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "Đang chờ"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "Đã tạm ngừng"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "Đang chạy"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "Phần tải lên hiện tại: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "Phần tải xuống hiện tại: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "Phần tải lên trước: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "Phần tải xuống trước: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "Tỷ lệ chia sẻ: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s đồng đẳng, %s khởi tạo.\nTổng số từ công cụ theo dõi: %s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "Các bản sao đã phân phối: %d; Kế tiếp: %s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr ""
+"Các phần: tổng %d, hoàn tất %d, hoàn tất một phần %d, hoạt động %d (trống %d)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "các phần sai %d + các phần yêu cầu bị hủy %s"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "Xong %.1f%%, còn lại %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "Tốc độ tải về"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "Tốc độ tải lên"
+
+#: bittorrent.py:2328
+msgid "NA"
+msgstr "Không có"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "Đã bắt đầu %s"
+
+#: bittorrent.py:2784
+msgid "_Quit"
+msgstr "_Thoát"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "Th_oát"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "_Mở tập tin dòng"
+
+#: bittorrent.py:2789
+msgid "Open torrent _URL"
+msgstr "Mở dòng_Địa Chỉ Mạng"
+
+#: bittorrent.py:2790
+msgid "Make _new torrent"
+msgstr "Tạo _dòng mới"
+
+#: bittorrent.py:2793
+msgid "_Pause/Play"
+msgstr "_Tạm ngừng/Phát"
+
+#: bittorrent.py:2797
+msgid "Show/Hide _finished torrents"
+msgstr "Hiện/Ẩn_các dòng đã kết thúc"
+
+#: bittorrent.py:2799
+msgid "_Resize window to fit"
+msgstr "_Định cỡ lại cửa sổ cho phù hợp"
+
+#: bittorrent.py:2801
+msgid "_Log"
+msgstr "_Nhật ký"
+
+#: bittorrent.py:2804
+msgid "_Settings"
+msgstr "_Thiết lập"
+
+#: bittorrent.py:2807 bittorrent.py:2823
+msgid "_Help"
+msgstr "_Trợ giúp"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "_Giới thiệu"
+
+#: bittorrent.py:2810
+msgid "_Donate"
+msgstr "_Tặng"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "_Tập tin"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "_Xem"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "Tìm kiếm các dòng"
+
+#: bittorrent.py:3013
+msgid "(stopped)"
+msgstr "(bị ngừng)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(nhiều)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "Đã tải về %s trình cài đặt "
+
+#: bittorrent.py:3159
+#, python-format
+msgid "Install new %s now?"
+msgstr "Cài đặt %s mới ngay bây giờ?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr ""
+"Bạn có muốn thoát khỏi %s và cài đặt phiên bản mới %s ngay bây giờ không?"
+
+#: bittorrent.py:3176
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "Có trợ giúp %s tại \n%s\nBạn có muốn đến đó ngay bây giờ không?"
+
+#: bittorrent.py:3179
+msgid "Visit help web page?"
+msgstr "Xem trang web trợ giúp?"
+
+#: bittorrent.py:3216
+msgid "There is one finished torrent in the list. "
+msgstr "Có một dòng đã kết thúc trong danh sách. "
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "Bạn có muốn gỡ bỏ nó không?"
+
+#: bittorrent.py:3219
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "Có %d dòng đã kết thúc trong danh sách. "
+
+#: bittorrent.py:3220
+msgid "Do you want to remove all of them?"
+msgstr "Bạn có muốn gỡ bỏ hết không?"
+
+#: bittorrent.py:3222
+msgid "Remove all finished torrents?"
+msgstr "Gỡ bỏ tất cả dòng đã kết thúc?"
+
+#: bittorrent.py:3230
+msgid "No finished torrents"
+msgstr "Không có dòng đã kết thúc nào"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "Không có dòng đã kết thúc nào để gỡ bỏ."
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "Mở dòng:"
+
+#: bittorrent.py:3309
+msgid "Change save location for "
+msgstr "Thay đổi vị trí lưu cho "
+
+#: bittorrent.py:3336
+msgid "File exists!"
+msgstr "Tập tin đã có!"
+
+#: bittorrent.py:3337
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "Tập tin « %s » đã có. Bạn có muốn chọn một tên tập tin khác không?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "Lưu vị trí cho "
+
+#: bittorrent.py:3374
+msgid "Directory exists!"
+msgstr "Thư mục đã có!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr ""
+"« %s » đã có. Bạn muốn tạo một thư mục trùng trong thư mục hiện hành phải không?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(thông điệp toàn cầu): %s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "Lỗi %s"
+
+#: bittorrent.py:3512
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "Gặp nhiều lỗi. Hãy nhấp vào nút OK để xem nhật ký lỗi."
+
+#: bittorrent.py:3679
+msgid "Stop running torrent?"
+msgstr "Ngừng dòng đang chạy?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr ""
+"Bạn sắp khởi chạy \"%s\". Bạn muốn ngừng một dòng đang chạy khác phải không?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "Bạn đã tặng chưa?"
+
+#: bittorrent.py:3692
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "Chúc mừng bạn dùng phiên bản %s mới. Bạn đã tặng chưa?"
+
+#: bittorrent.py:3707
+msgid "Thanks!"
+msgstr "Xin cám ơn!"
+
+#: bittorrent.py:3708
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr ""
+"Cám ơn bạn đã tặng. Để tặng lại, vui lòng chọn \"Tặng\" trong trình đơn \"Trợ giúp\"."
+
+#: bittorrent.py:3814
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "Không khởi động được Hàng Đợi Dòng, quan sát phía trên để biết lỗi."
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s trình tạo tập tin dòng %s "
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "Tạo tập tin dòng cho tập tin/thư mục này:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "Chọn..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(Thư mục sẽ trở thành các dòng bó)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "Cỡ phần:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "Dùng _công cụ theo dõi:"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "Dùng _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "Nút (tùy chọn):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "Chú thích:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "_Làm"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "_Máy chủ"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "_Cổng"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "Đang xây dựng các dòng..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "Đang kiểm tra các kích cỡ tập tin..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "Bắt đầu khởi tạo"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "đang xây dựng"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "Đã xong."
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "Đã xây dựng xong các dòng."
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "Lỗi!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "Lỗi trong khi xây dựng các dòng: "
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "Yêu cầu phiên bản GTK %s hay mới hơn"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d ngày"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 ngày %d giờ"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d giờ"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d phút"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d giây"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 giây"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "Trợ giúp %s"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "Các Câu Hỏi Thường Gặp:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "Đến"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "Hãy chọn một thư mục hiện có..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "Tất cả các tập tin"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Dòng"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "Tạo một thư mục mới..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "Chọn một tập tin"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "Chọn một thư mục"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "Không thể tải tình trạng đã lưu:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "Không thể lưu tình trạng giao diện người dùng:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "Nội dung của tập tin tình trạng không hợp lệ"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "Gặp lỗi khi đọc tập tin « %s »."
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "không thể phục hồi hoàn toàn tình trạng"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "Tập tin tình trạng không hợp lệ (trùng mục nhập)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "Gặp dữ liệu bị hỏng trong \"%s\", không thể phục hồi dòng."
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(thông tin Băm không khớp)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "Tập tin tình trạng không hợp lệ (sai mục nhập)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "Tập tin tình trạng giao diện người dùng sai"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "Phiên bản tập tin tình trạng giao diện người dùng sai"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr ""
+"Phiên bản tập tin tình trạng giao diện người dùng không được hỗ trợ (từ phiên bản khách mới hơn?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "Không thể xóa bỏ tập tin đã lưu tạm %s:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "Đây không phải là một tập tin dòng hợp lệ.(%s)"
+
+#: BitTorrent/TorrentQueue.py:538
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "Dòng này (hoặc một dòng khác có cùng nội dung) đang chạy."
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "Dòng này (hoặc một dòng khác có cùng nội dung) đang chờ chạy."
+
+#: BitTorrent/TorrentQueue.py:549
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Dòng có tình trạng không xác định %d"
+
+#: BitTorrent/TorrentQueue.py:566
+msgid "Could not write file "
+msgstr "Không thể ghi tập tin"
+
+#: BitTorrent/TorrentQueue.py:568
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "dòng sẽ không được khởi động lại đúng khi máy khách khởi động lại"
+
+#: BitTorrent/TorrentQueue.py:671
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr ""
+"Không thể chạy đồng thời hơn %d dòng. Để có thêm thông tin, hãy xem Câu hỏi Thường gặp tại %s."
+
+#: BitTorrent/TorrentQueue.py:795
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr ""
+"Không khởi động được dòng vì có các dòng khác đang chờ chạy và dòng này đã thỏa mãn các thiết lập cho thời điểm ngừng khởi tạo."
+
+#: BitTorrent/TorrentQueue.py:802
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr ""
+"Không khởi động được dòng vì dòng này đã thỏa mãn các thiết lập cho thời điểm ngừng khởi tạo dòng hoàn tất cuối cùng."
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "Không thể lấy phiên bản mới nhất từ %s"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "Không thể phân tách chuỗi phiên bản mới từ %s."
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr ""
+"Không thể tìm được một vị trí tạm thời thích hợp để lưu trình cài đặt %s %s."
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "Không có sẵn tập tin dòng cho trình cài đặt %s %s."
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "Có thể trình cài đặt %s %s chưa hoàn tất, thiếu hoặc bị hỏng."
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "Không thể khởi chạy trình cài đặt trên hệ điều hành này."
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "Không có dòng"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "Đang bắt đầu tải về"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "Đang chạy bình thường"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr ""
+"Có thể tải về chậm:\nRất có thể là gặp bức tường lửa hay bộ định tuyến NAT."
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "Kiểm tra kết nối mạng"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr ""
+"đã lưu thư mục có dữ liệu biến đổi như thông tin phục hồi nhanh và tình trạng giao diện người dùng đồ họa (GUI). Mặc định là thư mục con 'dữ liệu' của thư mục cấu hình bittorrent."
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr ""
+"mã hóa ký tự được dùng trong hệ thống tập tin cục bộ. Nếu bị bỏ trống thì nó sẽ tự động được dò tìm. Tuy nhiên, việc tự động dò tìm không hoạt động với các phiên bản python cũ hơn 2.3"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "Mã ngôn ngữ ISO để sử dụng"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr ""
+"địa chỉ IP để thông báo cho công cụ theo dõi (không có tác dụng trừ khi bạn ở trên cùng mạng cục bộ với công cụ theo dõi)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr ""
+"số hiệu cổng cho phép mọi người thấy nếu nó khác với cổng mà máy khách tuân theo một cách cục bộ"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "cổng tối thiểu cần tuân theo, hãy đếm nếu không có sẵn"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "cổng tối đa cần tuân theo"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "địa chỉ IP để kết nối cục bộ"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "số giây giữa các lần cập nhật thông tin đã hiển thị"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "số phút cần chờ giữa các lần yêu cầu thêm các đồng đẳng"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "số đồng đẳng tối thiểu để ngừng yêu cầu lại"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "số đồng đẳng mà ở đó ngừng việc khởi tạo các kết nối mới"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "số tối đa kết nối đi ra chưa hoàn tất"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr ""
+"số kết nối tối đa cần cho phép, sau số này mọi kết nối đến mới sẽ bị đóng ngay lập tức"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "có nên kiểm tra các Băm trên đĩa hay không"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "tốc độ tải lên tối đa theo kB/giây, 0 là vô hạn"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "số lần tải lên để điền đầy cùng với số lần mở thông thêm không có lỗi"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr ""
+"số tập tin tối đa trong một dòng đa tập tin để mở đồng thời, 0 là vô hạn. Sử dụng số này để tránh bị hết bộ mô tả tập tin."
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr ""
+"Khởi chạy một máy khách không có công cụ theo dõi. Phải bật khả năng này để tải về các dòng không có công cụ theo dõi."
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "số giây tạm dừng giữa các lần gửi tin kiểm tra liên kết"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "bao nhiêu byte cần truy vấn trong mỗi lần yêu cầu"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr ""
+"độ dài tối đa của mã hóa tiền tố mà bạn chấp nhận qua tuyến - các giá trị lớn hơn sẽ làm rớt kết nối."
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "số giây cần chờ giữa các lần đóng ổ cắm chưa nhận thông tin"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "số giây chờ giữa các lần kiểm tra nếu có các kết nối quá thời hạn"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr ""
+"độ dài tối đa phần cần gửi cho các đồng đẳng, đóng kết nối nếu nhận được một yêu cầu lớn hơn"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr ""
+"khoảng cách thời gian tối đa để ước tính tốc độ tải về/tải xuống hiện hành"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "khoảng cách thời gian tối đa để ước tính tốc độ khởi tạo hiện hành"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr ""
+"khoảng cách thời gian chờ tối đa giữa các lần thử lại thông báo nếu chúng tiếp tục thất bại"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr ""
+"số giây cần chờ dữ liệu đến qua một kết nối trước khi cho rằng nó bị nghẽn bán thường xuyên. "
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr ""
+"số lần tải về mà căn cứ vào để chuyển đổi trước từ ngẫu nhiên đến hiếm nhất"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "số byte cần ghi vào bộ đệm mạng một lần."
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr ""
+"từ chối kết nối thêm từ các địa chỉ của các đồng đẳng bị hỏng hoặc các đồng đẳng đối nghịch có chủ định gởi dữ liệu lỗi "
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "không kết nối đến nhiều đồng đẳng có cùng một địa chỉ IP"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr ""
+"nếu khác không thì đặt tùy chọn Điều Kiện Dịch Vụ (TOS) cho kết nối đồng đẳng theo giá trị này"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr ""
+"kích hoạt khả năng chỉnh sửa cho một lỗi trong libc BSD sẽ làm chậm lại việc đọc tập tin."
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "địa chỉ của ủy nhiệm HTTP cần dùng để kết nối với công cụ theo dõi"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr ""
+"đóng kết nối bằng RST và tránh tình trạng TCP TIME_WAIT (thời gian đợi TCP)"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr ""
+"Sử dụng các thư viện mạng Xoắn cho các kết nối mạng: 1 nghĩa là sử dụng xoắn, 0 nghĩa là không sử dụng xoắn, -1 nghĩa là tự động dò tìm và ưu tiên xoắn"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"tên tập tin (cho các dòng tập tin đơn) hay tên thư mục (cho các dòng bó) để lưu dòng, ghi đè lên tên mặc định trong dòng. Xem thêm --lưu_vào, nếu chưa chỉ rõ một trong hai lựa chọn thì người dùng sẽ được hỏi về địa điểm lưu"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "hiển thị giao diện người dùng cao cấp"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr ""
+"số phút tối đa cần khởi chạy một dòng hoàn tất trước khi ngừng khởi tạo"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr ""
+"tỷ lệ tải lên/tải về tối thiểu, theo phần trăm, cần đạt được trước khi ngừng khởi tạo. 0 có nghĩa là vô hạn."
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr ""
+"tỷ lệ tải lên/tải về tối thiểu, theo phần trăm, cần đạt được trước khi ngừng khởi tạo dòng cuối cùng. 0 có nghĩa là vô hạn. "
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Khởi chạy mỗi dòng hoàn tất một cách vô hạn (đến khi người dùng hủy việc này)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr ""
+"Khởi tạo dòng cuối cùng một cách vô hạn (đến khi người dùng hủy việc này)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "khởi động bộ tải về trong tình trạng tạm dừng"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"chỉ rõ ứng xử của ứng dụng khi người sử dụng tự cố khởi động một dòng nữa: \"thay thế\" có nghĩa là luôn thay thế dòng đang chạy bằng một dòng mới,\"thêm\" có nghĩa là luôn thêm dòng đang chạy song song và \"hỏi\" có nghĩa là hỏi người dùng mỗi lần."
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "Khởi động BitTorrent đã thu nhỏ"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr ""
+"ghi đè lên phiên bản được cung cấp bởi việc kiểm tra phiên bản http và bật chế độ gỡ lỗi kiểm tra phiên bản"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr ""
+"ghi đè lên phiên bản hiện thời được dùng trong việc kiểm tra phiên bản và bật chế độ gỡ lỗi kiểm tra phiên bản"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr ""
+"ghi rõ kích cỡ và vị trí cửa sổ bằng dạng: RỘNGxCAO+HIỆU_SỐ_X+HIỆU_SỐ _Y"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"tên tập tin (cho các dòng tập tin đơn) hoặc tên thư mục (cho các dòng bó) để lưu dòng, ghi đè lên tên mặc định trong dòng. Xem thêm --lưu_vào"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"số tải lên tối đa cho phép trong một lần: -1 có nghĩa là (mong muốn) một con số hợp lý dựa trên --tốc độ_tải lên_tối đa. Giá trị tự động chỉ có nghĩa khi chạy một dòng tại một thời điểm."
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"thư mục cục bộ nơi cần lưu nội dung dòng. Tập tin (các dòng tập tin đơn) hoặc thư mục (các dòng bó) sẽ được tạo dưới thư mục này dùng tên mặc định được chỉ rõ trong .tập tin dòng. Xem thêm --lưu_như."
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "có nên hỏi về vị trí cần lưu các tập tin đã tải về hay không"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"thư mục cục bộ nơi các dòng sẽ được lưu, dùng một tên được xác định bởi --lưu như_kiểu. Nếu nó bị bỏ trống thì từng dòng sẽ được lưu dưới thư mục của tập tin .dòng tương ứng"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "mức độ thường xuyên quét lại thư mục dòng, tính theo giây"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr ""
+"đợi một số giây sau khi thông báo một dòng trước khi khởi động nó để tránh phải chạy với công cụ theo dõi"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"Cách đặt tên của dòng tải về: sử dụng tên CỦA tập tin dòng (trừ .dòng); 2: sử dụng tên đã được mã hóa TRONG tập tin dòng; 3: tạo thư mục có tên CỦA tập tin dòng (trừ .dòng) và lưu vào thư mục đó sử dụng tên đã được mã hóa TRONG tập tin dòng; 4: nếu tên CỦA tập tin dòng (trừ .dòng) và tên được mã hóa TRONG tập tin dòng giống nhau, hãy sử dụng tên này (kiểu 1/2), nếu không, hãy tạo một thư mục trung gian như trong kiểu 3; CHÚ Ý: tùy chọn 1 và 2 có khả năng ghi đè lên tập tin mà không có cảnh báo và có thể xảy ra vấn đề về bảo mật"
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "có nên hiển thị đường dẫn đầy đủ hay nội dung dòng cho từng dòng"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "thư mục nơi cần tìm tập tin .dòng (bán đệ qui)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "có nên hiển thị thông tin chẩn đoán vào thiết bị xuất chuẩn hay không"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "hai lũy thừa mấy để đặt cho cỡ phần"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "tên công cụ theo dõi mặc định"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"nếu sai thì tạo một dòng không có công cụ theo dõi, thay vì địa chỉ Mạng thông báo, sử dụng nút tin cậy có dạng <địa chỉ IP>:<cổng> hoặc một chuỗi trống để lấy mấy nút từ bảng định tuyến của bạn"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "hoàn thành tải về!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<lạ>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "kết thúc trong %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "tải về thành công"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (%.1f MB lên / %.1f MB xuống)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB lên / %.1f MB xuống)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d được xem hiện tại, cộng %d bản sao đã phân phối (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d bản sao đã phân phối (kế tiếp: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "%d được xem hiện tại"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "LỖI:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "đang lưu:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "cỡ tập tin:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "phần trăm đã xong:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "thời gian còn lại:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "tải về vào:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "tốc độ tải về:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "tốc độ tải lên:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "tỷ lệ chia sẻ:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "trạng thái khởi tạo:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "trạng thái đồng đẳng:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr ""
+"Bạn không thể chỉ định cả hai tùy chọn « --save_as » (lưu dạng) và « --save_in » (lưu vào)"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "đang tắt máy..."
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "Lỗi trong khi đọc cấu hình:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "Lỗi trong khi đọc tập tin .dòng:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "bạn phải chỉ rõ một tập tin .dòng"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr ""
+"Thất bại khi khởi tạo Giao Diện Người Dùng Đồ Hoạ chế độ văn bản nên không thể tiếp tục."
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"Giao diện tải về này cần mô-đun Python chuẩn « curses », mà không có sẵn cho bản chuyển Windows riêng của Python. Tuy nhiên, nó có sẵn cho bản chuyển Cygwin của Python, chạy trên tất cả các hệ thống Win32 (www.cygwin.com)."
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "Bạn có thể vẫn dùng « bittorrent-console » (bàn giao tiếp) để tải về."
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "tập tin:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "cỡ:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "đích:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "tiến hành:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "trạng thái:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "tốc độ tải về:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "tốc độ tải lên:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "chia sẻ:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "lần khởi tạo:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "đồng đẳng:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d được xem hiện tại, cộng %d bản sao đã phân phối (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "lỗi:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "lỗi:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr " # \tĐịa chỉ IP\t\t Tải lên \t\t\tTải xuống \tTốc độ hoàn tất"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "đang tải về %d phần, có %d đoạn, %d trên %d các phần đã hoàn tất"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "Những lỗi này xảy ra trong khi thực hiện:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr ""
+"Cách sử dụng: %s Đ [T [T ...]]\nĐ\t\tĐịa chỉ Mạng của công cụ theo dõi\nT\t\tTập tin dòng"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "thông báo cũ cho %s: %s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "không có dòng"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "LỖI HỆ THỐNG: GẶP NGOẠI LỆ"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "Cảnh báo : "
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " không phải là một thư mục"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "lỗi: %s\nchạy không có đối số để giải thích tham số"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\nNGOẠI LỆ:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr ""
+"Bạn vẫn còn có thể sử dụng tập lệnh Python « btdownloadheadless.py » để tải về."
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "đang kết nối đến các đồng đẳng"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "Giờ tới xấp xỉ trong %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "Cỡ"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "Tải lên"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "Tổng số :"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s đồng đẳng %s khởi tạo %s bản sao đã pp. - %s về %s lên"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "lỗi: "
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\nchạy không có đối số để giải thích tham số"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "chú thích đọc được tùy chọn để cho vào tập tin .dòng"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "tập tin đích tùy chọn cho dòng"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s — giải mã %s các tập tin siêu thông tin"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "Cách sử dụng: %s [T [T...]]\n T\t\tTập tin dòng"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "tập tin siêu thông tin: %s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "băm thông tin: %s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "tên tập tin: %s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "cỡ tập tin:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "tập tin:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "tên thư mục: %s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "cỡ kho:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "địa chỉ mạng thông báo của công cụ theo dõi: %s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "các nút không có công cụ theo dõi:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "chú thích:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "Thứ hai"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "Thứ ba"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "Thứ tư"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "Thứ năm"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "Thứ sáu"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "Thứ bảy"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "Chủ nhật"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "Tháng 1"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "Tháng 2"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "Tháng 3"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "Tháng 4"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "Tháng 5"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "Tháng 6"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "Tháng 7"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "Tháng 8"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "Tháng 9"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "Tháng 10"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "Tháng 11"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "Tháng 12"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "Đã nén: %i Đã giải nén: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "Không thể lưu vĩnh viễn các tùy chọn:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr ""
+"Gặp lỗi khi đọc tập tin cấu hình. Tập tin cấu hình cũ được lưu vào « %s »."
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "Tùy chọn cấu hình không khớp: « %s »"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "Bạn phải thoát %s rồi cài đặt lại nó. (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "Không tìm thấy bản dịch sang ngôn ngữ « %s »\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "Tập tin %s thuộc về một dòng đang chạy khác"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "Tập tin %s đã có, nhưng không phải là một tập tin bình thường."
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "Đọc nhanh: tập tin đã bị cắt bớt?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr ""
+"Định dạng tập tin fastresume (tiếp tục nhanh) không được hỗ trợ, có thể từ một phiên bản máy khách khác?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr ""
+"Hình như một chương trình khác đã di chuyển, thay đổi tên hoặc xóa bỏ tập tin này, hoặc có lẽ %s đã bị hỏng khi chạy lần trước."
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr ""
+"Hình như một chương trình khác đã sửa đổi tập tin này, hoặc có lẽ %s đã bị hỏng khi chạy lần trước."
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr ""
+"Hình như một chương trình khác đã thay đổi kích cỡ tập tin, hoặc có lẽ %s đã bị hỏng khi chạy lần trước."
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "Không thể đọc dữ liệu kiểu fastresume (tiếp tục nhanh):"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "kết nối bị từ chối"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr "Bạn đã yêu cầu khả năng dùng lại bị tắt khi tổ hợp. Tiếc là không thể."
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+"listen_forever() (lắng nghe luôn) nên được gọi chỉ một lần với mỗi bộ phản ứng."
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+"listen_once() (lắng nghe một lần) có lẽ sẽ không trả lời cho đến khi không có hoạt động, và có lẽ sẽ không xử lý dữ kiện đã muốn. Đệ nghị bạn dùng listen_forever() (lắng nghe luôn)."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "dữ liệu sai trong tập tin trả lời: tổng số quá nhỏ"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "dữ liệu sai trong tập tin trả lời: tổng số quá lớn"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "đang kiểm tra tập tin hiện hữu"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+"« --check_hashes » (kiểm tra các băm) 0 hoặc thông tin fastresume (tiếp tục nhanh) không khớp với tình trạng tập tin (mất dữ liệu)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr ""
+"Thông tin fastresume (tiếp tục nhanh) sai (tập tin chứa nhiều dữ liệu hơn)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "Thông tin fastresume (tiếp tục nhanh) sai (giá trị không được phép)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "dữ liệu bị hỏng trên đĩa: có thể bạn đang chạy hai bản sao không?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr ""
+"đã tính tập tin hoàn thành khi khởi động, nhưng một phần đã thất bại khi kiểm tra băm"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "Không thể đặt công cụ quản lý tín hiệu :"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "đã rớt « %s »"
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "đã thêm « %s »"
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "đang chờ kiểm tra băm"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "đang tải về..."
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "Đang đọc lại tập tin cấu hình..."
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr ""
+"Bạn không thể chỉ rõ tên của tập tin .dòng trong khi tạo ra nhiều dòng đồng thời"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "Phiên bản này không hỗ trợ việc mã hóa hệ thống tập tin « %s »"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr ""
+"Không thể chuyển đổi tên tập tin/thư mục « %s » sang UTF-8 (%s). Hoặc việc mã hóa hệ thống tập tin được giả sử là « %s » là sai hoặc tên tập tin chứa các byte không được phép."
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr ""
+"Tên tập tin/thư mục « %s » chứa các giá trị Unicode được dành riêng không tương ứng với các ký tự."
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "Không thể đọc thư mục"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "Không thể tìm các thông tin về tình trạng tập tin"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "đang gỡ bỏ %s (sẽ thêm lại)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "•• cảnh báo: %s là dòng trùng với %s ••"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "•• cảnh báo: %s có lỗi ••"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... thành công"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "đang gỡ bỏ %s..."
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "đã kiểm tra xong"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "Không thẻ đọc %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr ""
+"Không thể tải về hay mở\n%s\nHãy thử sử dụng trình duyệt Mạng để tải về tập tin dòng."
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "Cần thiết Python phiên bản %s hay mới hơn"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "Quá muộn để chuyển đổi hậu phương kiểu RawServer, %s đã được sử dụng."
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+"Thông báo công cụ theo dõi chưa hoàn tất trong %d giây sau khi khởi động nó"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr ""
+"Lỗi trong khi kết nối đến công cụ theo dõi, « gethostbyname » (gọi máy chủ theo tên) đã thất bại - "
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "Lỗi trong khi kết nối đến công cụ theo dõi - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "dữ liệu sai từ công cụ theo dõi - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "công cụ theo dõi đã từ chối - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr ""
+"Đang hủy bỏ dòng vì nó bị công cụ theo dõi từ chối trong khi không kết nối đến bất kỳ đồng đẳng nào."
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "Thông điệp từ công cụ theo dõi: "
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "cảnh báo từ công cụ theo dõi - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Lỗi tra tìm không có bộ theo dõi: "
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "siêu thông tin sai: không phải là một từ điển"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "siêu thông tin sai: khóa các phần sai"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "siêu thông tin sai: độ dài phần không hợp lệ"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "siêu thông tin sai: tên sai"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "không cho phép tên %s vì lý do bảo mật"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "trộn tập tin đơn/đa với nhau"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "siêu thông tin sai: độ dài sai"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "siêu thông tin sai: « files » không phải là một danh sách các tập tin"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "siêu thông tin sai: mục nhập tập tin phải là « dict »"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "siêu thông tin sai: đường dẫn sai"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "siêu thông tin sai: thư mục đường dẫn sai"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "không cho phép đường dẫn %s vì lý do bảo mật"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "siêu thông tin sai: đường dẫn trùng"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr ""
+"siêu thông tin sai: tên được sử dụng làm cả tên tập tin và tên thư mục con"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "siêu thông tin sai: kiểu đối tượng không đúng"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "siêu thông tin sai: không có chuỗi địa chỉ Mạng thông báo"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "siêu thông tin sai: nút không phải là danh sách"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "siêu thông tin sai: danh sách nút phải có chỉ hai yếu tố thôi"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "siêu thông tin sai: máy hỗ trợ nút phải là chuỗi"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "siêu thông tin sai: cổng nút phải là số nguyên"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "lý do thất bại phải là chuỗi"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "thông điệp cảnh báo phải là chuỗi"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+"mục nhập không hợp lệ trong danh sách đồng đắng: thông tin đồng đắng phải là dict"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr ""
+"mục nhập không hợp lệ trong danh sách: địa chỉ IP của đồng đắng phải là chuỗi"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr ""
+"mục nhập không hợp lệ trong danh sách: cổng đồng đắng phải là số nguyên"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "mục nhập không hợp lệ trong danh sách: ID đồng đắng không hợp lệ"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "danh sách đồng đẳng không hợp lệ"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "khoảng nghỉ giữa hai lần thông báo không hợp lệ"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "khoảng nghỉ tối thiểu giữa hai lần thông báo không hợp lệ"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "ID công cụ theo dõi không hợp lệ"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "số đếm đồng đẳng không hợp lệ"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "số đếm khởi tạo không hợp lệ"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "mục nhập « cuối cùng » không hợp lệ"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "Cách sử dụng: %s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[TC] [TMD]\n TC\t\tcác tùy chọn\n TMD\tthư mục dòng\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr ""
+"Nếu có một đối số không phải là tùy chọn thì coi nó là giá trị \ncủa tùy chọn « torrent_dir » (thư mục dòng).\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[CÁCTÙYCHỌN][CÁCTẬPTINDÒNG]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[TC] [TTD]\n TC\t\tcác tùy chọn\n TTD\ttập tin dòng\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr ""
+"[TC] Đ TT [TT]\n TC\t\ttùy chọn\n Đ\t\tđịa chỉ Mạng của công cụ theo dõi\n TT\t\ttập tin\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "các đối số :\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(mặc định thành "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "khóa lạ"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "tham số được gởi qua tại điểm đầu không có giá trị"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "không phân tách dòng lệnh được tại"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "Cần thiết tùy chọn %s."
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "Cần phải cung cấp ít nhất %d đối số."
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "Quá nhiều đối số : %d tối đa."
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "định dạng của %s không đúng: %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "Cổng nơi cần lắng nghe"
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "tập tin cần lưu thông tin gần đây về bộ tải về"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "thời hạn đóng các kết nối"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "số giây giữa hai lần lưu tập tin tải về"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "số giây giữa hai lần hết hạn dùng bộ tải về"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "số giây bộ tải về cần chờ giữa hai lần thông báo lại"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+"số đồng đẳng mặc định cần gửi một thông điệp thông tin đến nếu máy khách không chỉ rõ một số nào."
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "thời gian cần chờ giữa hai lần kiểm tra nếu kết nối nào đã quá giờ"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr ""
+"số lần cần kiểm tra nếu bộ tải về nằm sau một bộ định tuyến NAT(0 có nghĩa là Đừng kiểm tra)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "có nên thêm mục nhập vào bản ghi để có kết quả kiểm tra NAT hay không"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "thời gian tối thiểu cần tính sau lần xóa sạch trước, để có thể lặp lại"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+"thời gian tối thiểu tính bằng giây trước khi bộ nhớ đệm được coi là cũ nên được xóa sạch"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"chỉ cho phép việc tải về cho tập tin .dòng trong thư mục này (cũng đệ qui trong thư mục con của mỗi thư mục không có tập tin .dòng trong chính nó). Nếu chọn tính năng này, các dòng trong thư mục này xuất hiện trong trang thông tin/scrape, nếu có các đồng đẳng hay không, cũng được."
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+"cho phép khóa đặc biệt trong các dòng trong « allowed_dir » (thư mục được phép) để có tác động đến việc truy cập công cụ theo dõi"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "có nên mở lại tập tin bản ghi khi nhận được tín hiệu HUP hay không"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+"có nên hiển thị trang thông tin khi tải thư mục gốc của công cụ theo dõi hay không"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "địa chỉ Mạng nơi cần chuyển hướng trang thông tin đến"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "có nên hiển thị tên từ thư mục được phép hay không"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+"tập tin chứa dữ liệu « x-icon » (biểu tượng x) sẽ trở về khi trình duyệt yêu cầu tập tin biểu tưọơng ưa thích <favicon.ico>"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"bỏ qua tham số GET (lấy) IP từ các máy không có địa chỉ IP của mạng cục bộ (0 = không bao giờ, 1 = luôn luôn, 2 = bỏ qua nếu tính năng kiểm tra NAT bị tắt). Các dòng đầu của ủy nhiệm HTTP cung cấp địa chỉ của máy khách gốc được coi như các « --ip »."
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr ""
+"tập tin cần ghi các bản ghi của công cụ theo dõi, dùng - cho thiết bị xuất chuẩn (mặc định)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr ""
+"dùng với « allowed_dir » (thư mục được phép); thêm một địa chỉ Mạng </file?hash={hash}> cho phép người dùng tải xuống tập tin dòng "
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+"giữ các dòng chết sau khi chúng hết hạn (nên chúng vẫn xuất hiện trong /scrape và trang Mạng của bạn). Chỉ xảy ra vấn đề nếu chưa đặt « allowed_dir » (thư mục được phép)."
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+"cho phép truy cập scrape (giá trị có thể là không có, cụ thể hay đầy đủ)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "số đồng đẳng tối đa cần đáp ứng bất kỳ yêu cầu nào"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr ""
+"có lẽ tập tin của bạn tồn tại một nơi nào khác\nnhưng mà tiếc là nó không phải tại đây\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr ""
+"•• cảnh báo : tập tin biểu tượng ưa thích (favicon) chỉ định « --%s-- » không tồn tại. ••"
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "•• cảnh báo : tập tin tình trạng %s bị hỏng nên đang đặt lại ••"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# Bản ghi bắt đầu :"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr ""
+"•• cảnh báo : không thể chuyển hướng thiết bị xuất chuẩn vào tập tin bản ghi: "
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# Mở lại bản ghi:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "•• cảnh báo : không thể mở lại tập tin bản ghi ••"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "công cụ theo dõi này không có chức năng scrape đó."
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "công cụ theo dõi này không có chức năng scrape đầy đủ."
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "công cụ theo dõi này không có chức năng lấy."
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+"Việc tải về theo yêu cầu không được quyền sử dụng với công cụ theo dõi này."
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "chạy không có đối số nào để giải thích các tham số"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# Đang tắt máy:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "Không thể khởi động hai tức thời riêng của cùng một dòng"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "Ẩn %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "Hiện %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "không phải là một chuỗi mã hóa b hợp lệ"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "giá trị mã hóa b không hợp lệ (dữ liệu đi sau tiền tố hợp lệ)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr ""
+"số hiệu cổng tối đa nhỏ hơn số hiệu cổng tối thiểu: không có cổng nào để kiểm tra"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "Không thể mở một cổng lắng nghe: %s"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "Không thể mở một cổng lắng nghe: %s."
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "Hãy kiểm tra thiết lập phạm vi cổng."
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "Khởi động lần đầu"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "Không thể tải dữ liệu kiểu fastresume (tiếp tục nhanh): %s"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "Sẽ thực hiện việc kiểm tra băm đầy đủ."
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "phần %d đã thất bại việc kiểm tra băm nên đang tải về nó lần nữa"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr ""
+"Cố gắng tải về một dòng không có công cụ theo dõi với máy khách không có công cụ theo dõi được tắt."
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "tải về thất bại: "
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr ""
+"Lỗi xuất/nhập: không còn chỗ chứa trên đĩa hoặc không tạo được một tập tin lớn như thế:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "đã kết thúc bởi lỗi xuất/nhập:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "đã kết thúc bởi lỗi hệ điều hành:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "đã kết thúc bởi lỗi ngoại lệ bên trong:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "Có thêm lỗi khi đang đóng vì có sẵn lỗi: "
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "Không thể gỡ bỏ tập tin fastresume sau khi thất bại:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "đang khởi tạo"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "Không thể ghi dữ liệu fastresume: "
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "tắt máy"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr ""
+"Hình như có phiên bản Python cũ không hỗ trợ dò tìm bộ mã hóa hệ thống tập tin nên giả sử « ascii »."
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr ""
+"Python không thể tự động dò tìm bộ mã hóa hệ thống tập tin nên sử dụng « ascii » thay thế."
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr ""
+"Không hỗ trợ bộ mã hóa hệ thống tập tin « %s » nên sử dụng « ascii » thay thế."
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "Thành phần đường dẫn tập tin sai: "
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tập tin .dòng này đã được tạo bởi một công cụ bị hỏng và có tên tập tin được mã hóa không đúng. Một số hay tất cả các tên tập tin này có thể sẽ hiển thị khác so với công cụ tạo tập tin của tập tin .dòng chỉ định."
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"Tập tin .dòng này đã được tạo bởi một công cụ bị hỏng và có giá trị ký tự sai không tương ứng với ký tự thật nào. Một số hay tất cả tên tập tin này có thể sẽ hiển thị khác so với công cụ tạo tập tin của tập tin .dòng chỉ định."
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr ""
+"Tập tin .dòng này đã được tạo bởi một công cụ bị hỏng và có tên tập tin được mã hóa cho đúng. Tên được sử dụng có thể vẫn đúng."
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Bộ ký tự được dùng trong hệ thống tập tin cục bộ (\"%s\") không thể thể hiện tất cả mọi ký tự được sử dụng trong tên tập tin của dòng này. Tên tập tin đã được thay đổi từ tên đầu tiên."
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr ""
+"Hệ thống Windows không thể quản lý một số ký tự trong những tên tập tin của dòng này. Như thế thì tên gốc của tập tin đã bị thay đổi."
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"Tập tin .dòng này đã được tạo bởi một công cụ bị hỏng và có ít nhất một tập tin có tên tập tin hay tên thư mục không hợp lệ. Tuy nhiên, vì mọi tập tin như vậy đã được đánh dấu có độ dài là 0 và các tập tin này được bỏ qua."
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "Lệnh không được quản lý: %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "Không thể tạo ổ cắm điều khiển: đang được sử dụng"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "Không thể gỡ bỏ tên tập tin ổ cắm điều khiển cũ:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "Không thể tạo ổ cắm điều khiển: "
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "Không thể gửi lệnh: "
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "Mutex toàn cầu đã được tạo."
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "• Không thể tìm được một cổng mở. •"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "• Không thể tạo được thư mục dữ liệu ứng dụng. •"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+"• Không thể lấy khóa mutex toàn cầu cho tập tin của ổ cắm điều khiển. •"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr ""
+"Một bản chạy trước của BitTorrent đã không được làm sạch đúng. Đang tiếp tục..."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "Có một bản sao BitTorrent đang chạy, nhưng mà không có « %s ».\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "Trình này sẽ đoán cổng."
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "Mới tìm cổng: %d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "Không tìm thấy cổng."
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "Trạng thái IPC: %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "Đối thoại DDE đã kết nối."
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "lỗi hủy đăng ký hoặc đóng ổ cắm máy phục vụ : %s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "mất ổ cắm máy phục vụ"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "Gặp lỗi khi quản lý kết nối đã chấp nhận: "
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "Phải thoát vì ngăn nhớ TCP bị hỏng. Hãy xem Hỏi Đáp tại %s"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "mới nhận kiểu thông điệp lạ"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "quá giờ"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..246c764
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,2771 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-30 10:15-0800\n"
+"Last-Translator: Hui <hzhu@tc-associates.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "请安装 Python %s 或更高版本"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "已过期,请勿使用"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "试图同另一个 %s 进程(似乎正在运行)通信时失败。"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "关闭所有的 %s 窗口也许可以解决这个问题。"
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s 已经在运行"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "试图同另一个 %s 进程通信时失败。"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "需要 PyGTK %s 或更高的版本"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "按住鼠标左键拖放选项以重新排列"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "单击右键打开菜单"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "拨号"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "数字用户线路(DSL)/电缆 128k 以上"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "数字用户线路(DSL)/电缆 256k 以上"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "数字用户线路(DSL) 768k 以上"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "输入种子地址"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "输入要打开的种子文件地址:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "最大上传速率:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "暂时停止全部运行中的种子"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "继续下载"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "新版本 %s 可用"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "已有更新的版本 %s 可用。\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "您正在使用的版本为 %s,新版本为 %s。\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "您可以由以下位置下载最新版本︰\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "稍后下载(_l)"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "开始下载(_n)"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "稍后再提醒我(_R)"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "关于 %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "测试版"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "版本 %s"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "不能打开 %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "捐款"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s 历史日志"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "保存日志于:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "日志已保存"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "日志已清除"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s 设置"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "普通"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "在 Windows 启动时运行 BitTorrent"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "最小化到系统通知区域"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "进度条文字总为黑色\n(需要重启程序)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "保存"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "保存下载位置:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "更改..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "每次新下载都询问保存位置"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "正在下载"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "当开始一个新的 torrent 时:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "停止其它正在运行的 torrent 以节约空间(_S)"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "不停止其它正在运行的 torrents (_D)"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "每次都询问(_A)"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "做种状态中"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr "完成后继续做种:直到共享比率达到百分之[_],或者持续[_]分钟,优先选择的选项有效。"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "无限期做种"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "为刚完成的下载做种:直到共享比率达到百分之[_]"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "网络"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "查找可用端口:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "起始端口:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "启用自动端口映射"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "报告给跟踪服务器的 IP 地址:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(除非与跟踪服务器处于\n同一局域网,否则无效)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "警告:改变这些设置可能\n导致 %s 的功能异常。"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "选项"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "值"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "高级"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "选择默认下载目录:"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "移除快捷键 %s 时失败。"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "“%s”中的文件"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "从不"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "从不下载"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "普通"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "正常下载"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "第一"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "首先下载"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "文件名"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "长度"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "下载"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "从不"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "第一"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "“%s”的对等客户"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP 地址"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "客户端"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "连接"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s 下载"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s 上传"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "已下载 MB"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "已上传 MB"
+
+#: bittorrent.py:1386
+#, python-format
+msgid "% complete"
+msgstr "完成 %"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "估计对方下载速度 KB/s"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "对等客户 ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "感兴趣"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "堵塞"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "缓冲"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr "乐观上传"
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "远程"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "本地"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "有问题的对等客户"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr "%d 完成"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "%d 错误"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "禁止的"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "完好"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "“%s”的相关信息"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "种子文件名称:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(无跟踪服务器种子)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "发布 url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ",包含了一个文件"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ",包含了 %d 个文件"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "总大小:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "分块数目:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "信息摘要值:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "保存于:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "文件名:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "打开目录(_O)"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "显示文件列表(_F)"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "种子信息"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "删除种子"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "终止种子"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ",将继续做种 %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ",将无限期做种。"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "已完成,共享比率为:%d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "已完成,%s 已上传"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "完成"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "种子信息(_i)"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "文件列表(_F)"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "对等客户列表(_P)"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "改变位置(_C)"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "无限期做种(_S)"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "重新开始(_s)"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "完成(_F)"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "移除(_R)"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "放弃(_A)"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "您是否确定要删除“%s”?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "您对该种子的共享率是 %d%%。"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "您给该种子上传了 %s。"
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "是否要删除该种子?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "已完成"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "请拖放到清单中以作种"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "失败"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "请拖放到清单中以继续"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "等待中"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "暂停的"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "运行中"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "当前上传:%s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "当前下载:%s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "之前上传:%s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "之前下载:%s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "共享比率:%0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s 个对等客户,%s 个种子。跟踪服务器共传回 %s 个对等客户"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "分散的拷贝 %d 个;下一个为:%s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "文件片段:总计 %d,%d 片完整,%d 片部分完成,%d 片正下载中(%d 片是空片)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d 错误文件块 + 丢弃请求中 %s 字节"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "完成 %.1f%%,还剩 %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "下载速度"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "上传速度"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "未知"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s 已经开始"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "退出(_Q)"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "退出(_X)"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "打开种子文件(_O)"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "打开种子 _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "制作新种子(_N)"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "暂停/继续(_P)"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "显示/隐藏已完成的种子(_F)"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "重置为适中大小的窗口(_R)"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "日志(_L)"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "设置(_S)"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "帮助(_H)"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "关于(_A)"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "捐赠(_D)"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "文件(_F)"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "查看(_V)"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "搜索种子"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(停止的)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(多个)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "已经开始下载 %s 安装包"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "现在要安装新的 %s 吗?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "是否要现在退出 %s 并安装新版本 %s 吗?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s 的帮助信息在\n%s\n您是否想去看看?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "是否访问帮助页面?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "在清单中有一个已经完成的种子。"
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "您确定要删除吗?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "在清单中共有 %d 个已经完成的种子。"
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "您确定要全部删除吗?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "确定要删除所有已经完成的种子吗?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "不存在已经完成的种子"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "没有已经完成的种子可删除。"
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "打开种子:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "改变保存位置"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "文件已存在!"
+
+#: bittorrent.py:3342
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "“%s”已经存在。您是否要选择一个不同的文件名?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "保存位置:"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "目录已存在!"
+
+#: bittorrent.py:3380
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr "“%s”已存在。你是否要在此目录中创建一个同样的副本?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(全局消息):%s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s 出错"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "有多个错误发生。请点击“确定”查看错误日志。"
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "停止正在运行的种子吗?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "正试图启动 \"%s\"。你是否要停止其它正在运行的 torrent ?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "您已捐赠过了吗?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "欢迎使用 %s 的新版本。您是否已捐赠过?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "谢谢!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr "谢谢您的捐赠!若您还想捐赠,请选择“帮助”菜单中的“捐赠”选项。"
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "无法启动种子队列,错误详情请看上方。"
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s 种子文件制作者 %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "为此文件/目录制作种子:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "选取..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(目录将被制作为批处理种子)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "分块大小:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "使用跟踪服务器(_T):"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "使用分布式哈希表(_DHT):"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "节点(可选):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "备注:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "制作(_M)"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "主机(_H)"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "端口(_P)"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "制作种子..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "检查文件大小..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "开始做种"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "正在制作"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "完成。"
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "完成制作 torrent 文件。"
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "错误!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "种子制作出现错误:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "需要 GTK %s 或者更高的版本"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d 天"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 天 %d 小时"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d 小时"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d 分钟"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d 秒"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 秒"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s 帮助"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "常见问题:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "跳转"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "选择一个现有文件夹..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "所有文件"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "种子文件"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "建立一个新文件夹..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "选择一个文件"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "选择一个文件夹"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "不能载入保存的状态:"
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "不能保存用户界面状态:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "无效状态文件内容"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "读取文件 \"%s\" 时出错。"
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "不能完全恢复状态"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "无效状态记录文件(重复的条目)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "\"%s\" 中的数据已损坏,无法恢复 torrent。"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(哈希值不匹配)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "无效状态记录文件(损坏的条目)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "损坏的用户界面状态记录文件"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "损坏的用户界面状态记录文件版本"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "不支持的用户界面状态记录文件版本 (来自更新的客户端版本?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "无法删除缓存中的 %s 文件:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "这不是一个有效的种子文件。(%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "这个种子文件(或者一个有着相同内容的文件)已经开始在下载了。"
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "这个种子文件(或者一个有着相同内容的文件)已经在等待运行。"
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "种子处于未知状态 %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "不能写入文件"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "这将导致种子在程序重启后不能正确启动"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr "不能同时运行多于 %d 个种子。欲知更多信息,请从 %s 查看常见问题解答。"
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr "停止做种,因为有其它种子在等待运行,并且已经满足停止做种的条件。"
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr "停止做种,因为它已经满足停止做种的条件。"
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "无法从 %s 获得最新版本"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "无法从 %s 解析新的版本字符串"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "无法找到一个合适的临时地点来保存 %s %s 的安装程序。"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "没有提供 %s %s 安装程序的种子文件。"
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s 安装程序不完整,或丢失,或已损坏。"
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "无法在此操作系统上启动安装程序"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "没有种子"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "开始下载"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "正常运行中"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "下载速度也许会非常慢:\n您可能处在防火墙之后。"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "检测网络连接"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr "保存快速恢复信息、图形用户界面状态数据等变量的目录。默认设为 bittorrent 配置目录的“data”子目录。"
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr "本地文件系统所用的字符编码。如果不指定,系统将自动检测。低于 2.3 的 python 版本自动检测不能实现。"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "使用的 ISO 语言编码"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr "报告给跟踪服务器的 ip 地址(除非与跟踪服务器在同一本地网,否则无效)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr "公网可见的端口(当与客户端本地监听的端口不同时)"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "监听的最小端口,不可使用时递增"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "监听的最大端口"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "本地绑定的 ip 地址"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "显示信息刷新的间隔(秒)"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "向服务器请求更多对等客户信息的时间间隔(分钟)"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "停止重新请求所需要的最少的对等客户的数目"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "停止发起新连接所需要的对等客户的数目"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "最大上传连接数"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr "允许的最大连接数目,超过这个数目后新的连接将被立即关闭"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "是否检查磁盘上的消息摘要值"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "以 kB/s 表示的最大上传速率,0 表示没有限制"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "填满多余的乐观阻塞情况所需要的上传的数目"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr "在处理一个包含多个文件的种子的时候,最多允许同时打开的文件数目,0 表示没有限制。使用这项参数以避免文件描述符耗尽。"
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr "初始化无跟踪服务的客户端。如果下载无跟踪服务的种子必须启用该功能。"
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "发送心跳信号的时间间隔(秒)"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "每个请求要求多少个字节。"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr "您的线路能接收的最长的前缀编码-此值过高容易导致连接中断。"
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "没有新数据待接收的网络端口的关闭等待时间(秒)"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "两次检查连接超时的行为之间的时间间隔(秒)"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr "发送到对等客户的最长的数据片,如果请求发送的长度大于这个数目,将关闭其连接"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "进行当前上传和下载的速率的两次估算的最大间隔时间"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "进行当前种子比率的两次估算的最大时间间隔"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "当发布持续失败时的最大重试间隔时间"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr "在确认某个连接已经发生半永久性阻塞之前等待它上面的数据到达的时间间隔(秒)"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "从随机更换到最稀有者优先所需要的下载数目"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "一次往网络缓冲区写入的字节数。"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr "拒绝从发送不正确的数据,因而可能是已破坏的或者有潜在敌意的对等客户的地址处接收进一步的连接"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "不要连接到拥有同一个 ip 地址的几个对等客户"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "如果非零,则将对等客户的连接的 TOS 选项设置为这个值"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr "允许一个替代解决方案,以消除 BSD 的 libc 中的一个问题,该问题会导致文件读取速度很慢。"
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "连接到跟踪器所需要的 HTTP 代理服务器的地址"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "使用 RST 来关闭连接,避免 TCP TIME_WAIT 状态"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr "使用 Twisted 网络库来连接网络。1 使用 Twisted,0 不使用 Twisted,-1 自动检测,如果有则使用 Twisted。"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"文件名(单文件种子)或者目录名(批处理种子)要把种子另存为其它文件,应替换掉种子的默认名称。请参阅--save_in,如果这两个参数都没有被指定,则用户将会被询问保存地点。"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "显示高级用户界面"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "为已完成的种子文件继续做种的最长时间(分钟)"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr "在停止做种前所要达到的最小的上传/下载率,用百分数表示。0 表示没有限制。"
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr "在为上一个完成的种子文件停止做种前所要达到的最小的上传/下载率,用百分数表示。0 表示没有限制。 "
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "为每个已完成的种子文件无限期做种(除非用户手动取消它)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "为上一个完成的种子文件无限期做种(除非用户手动取消它)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "以暂停的状态启动下载客户端"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"决定当用户手动开始另外一个种子文件时程序的行为:“替换”意味着总是将正在运行的种子文件替换成新的种子文件,“添加”意味着总是并行地增加运行中的种子文件,“询问”意味着每次都向用户询问。"
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "启动 BitTorrent 时最小化窗口。"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr "覆盖 http 版本检查所获取的版本号,启用版本检查调试模式。"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr "覆盖当前版本检查中所用的版本号,启用版本检查调试模式。 "
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "指定窗口大小和位置,格式如下:WIDTHxHEIGHT+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr "文件名(单文件种子)或者目录名(批处理种),要将种子文件另存为其它文件,应替换掉种子文件的默认名称。请参阅 --save_in"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"同一时刻允许的最大的上传数目。-1 意味着一个基于--max_upload_rate 的合理的(希望是如此)数目。自动确定的值只有当同一时刻只有一个种子文件在下载时是有意义的。"
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"种子文件所代表的内容将被保存到的本地路径。文件(单文件种子)或者目录(批处理种子)将在这个目录下被创建,名字则是.torrent 文件中指定的默认名称。请参阅 --save_as"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "是否询问将下载文件保存到哪里"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"保存种子内容的本地目录,使用由--saveas_style 参数决定的名称。如果此项为空则每个种子内容会被保存到和对应的 .torrent 文件相同的目录中。"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "重新扫描种子目录的时间间隔,用秒表示"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr "在检查 torrent 之后等待几秒,以免同 tracker 服务器发行冲突。"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"如何命名种子的下载内容:1:直接使用种子文件的名称(去除掉 .torrent 后缀);2:使用编码到种子文件内部的名称;3:创建一个以种子文件的名称(去除掉 .torrent 后缀)命名的目录,并且把下载内容保存到这个目录下,且使用编码到种子文件内部的名称来命名它;4:如果种子文件的名称(去除掉 .torrent 后缀)和编码到种子文件内部的名称一致,则使用这个名称(方案 1 或者 2),否则按照方案 3 创建一个新的目录来进行保存;注意:方案 1 和方案 2 有可能在不发出警告的情况下覆盖文件,因此可能会存在一定的安全问题。"
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "是否显示每个种子的完整路径或者种子的内容"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "寻找 .torrent 文件的目录(半递归)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "是否显示诊断信息到标准输出"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "设置文件分块大小为 2 的多少次幂"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "默认跟踪服务器名称"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"如果为假则创建一个无跟踪器的种子,而不使用发布 URL,使用形如 <ip>:<port> 表示可靠节点,或者使用空字符串以便从您的路由表中选取一些节点"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "下载完成!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<未知>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "完成于:%d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "下载成功"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr " oo (%.1f MB 上传 / %.1f MB 下载)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (%.1f MB 上传 / %.1f MB 下载)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "%d 个种子,加上 %d 个分散的拷贝(%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "%d 个分散的拷贝(下一个:%s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "现在有 %d 个种子"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "出错:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "保存:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "文件大小:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "完成百分比:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "剩余时间:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "下载到:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "下载速度:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "上传速度:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "共享率:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "种子状态:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "对等客户状态:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "您不能同时指定 --save_as 和 --save_in"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "关闭"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "读取配置出错:"
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "读取 .torrent 文件出错:"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "您必须指定一个 .torrent 文件"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "文本模式图形用户界面初始化失败,无法继续。"
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"这个下载界面需要 Python 的标准模“curses”,然而在 Windows 的 Python 本地移植中不支持它。但是在 Python 的 Cygwin 移植中提供支持,Cygwin 可以在所有的 win32 系统上运行 (www.cygwin.com)。"
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "你仍然可以通过“bittorrent-控制台”来下载。"
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "文件:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "大小:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "目标:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "进度:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "状态:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "下载速度:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "上传速度:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "共享:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "种子:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "对等客户:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "%d 个种子,加上 %d 个分散的拷贝(%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "错误:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "错误:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP 上传 下载 完成 速度"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "正在下载 %d 块,有 %d 碎片,%d 块已经完成,总共有 %d 块"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "执行时发生下列错误:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "使用方法:%s 跟踪服务器地址 [种子文件 [种子文件 ...]]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "关于 %s 的旧通告:%s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "无种"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "系统错误 - 产生意外"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "警告:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr "不是一个目录"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "错误:%s\n不带任何参数运行显示参数说明"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\n异常:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "您仍然可以使用“btdownloadheadless.py”来下载。"
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "正在连接到对等客户"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "预计完成时间 %d:%02d:%02d"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "大小"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "上传"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "合计:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr "(%s) %s - %s 个同伴 %s 个种子 %s 个发布拷贝 - 已下载 %s 已上传 %s"
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "错误:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\n不带任何参数运行将显示参数说明"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "可选的附加到 .torrent 文件中的可阅读的评论"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "可选的保存种子文件的目标文件"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr "%s %s - 解码 %s 元信息文件"
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "用法:%s [种子文件 [种子文件 ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "元信息文件:%s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "信息摘要:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "文件名:%s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "文件大小:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "文件:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "文件夹名:%s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "文档大小:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "跟踪服务器发布url:%s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "分布式节点:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "评论:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "星期一"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "星期二"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "星期三"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "星期四"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "星期五"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "星期六"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "星期天"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "一月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "二月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "三月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "四月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "五月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "六月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "七月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "八月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "九月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "十月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "十一月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "十二月"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "压缩:%i 未压缩:%i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "不能永久保存选项设置"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "读取配置文件时出错。旧的配置文件保存在 \"%s\" 中。"
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "配置选项不匹配:\"%s\""
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "你必须退出 %s 并重新安装他。(%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "无法找到语言 \"%s\" 的翻译\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "文件%s属于另一个运行中的种子"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "文件%s已经存在,但不是一个普通文件"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "读取量过短-有些文件被截断了?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr "不支持的“快速恢复”文件格式,可能来自另一个客户端版本?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr "可能是另一个程序移除/重命名/删除了文件 %s,或者上次运行时异常退出了。"
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr "另一个程序可能修改了文件 %s,或者上次运行时异常退出了。 "
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr "另一个程序可能修改了文件 %s 的大小,或者上次运行时异常退出了。"
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "不能读取“快速恢复”数据:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "拒绝连接"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr "你请求在绑定的端口上关闭reuse选项。对不起,这无法做到。"
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr "listen_forever()只能被每个reactor调用一次。 "
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr "listen_once()也许直到有活动发生才会返回,而且也许不会处理你想要处理的事件。因此使用listen_forever()."
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "回应文件中的数据有误-总量过小"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "回应文件中的数据有误-总量过大"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "检查现有文件"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr "--check_hashes 0 或者“快速恢复”文件与文件实际状态不符(数据缺失)"
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "“快速恢复”信息有误(实际文件包含更多的数据)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr "“快速恢复”信息有误(非法的值)"
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "磁盘数据损坏-也许您两次运行同一程序?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "被告知文件在起始时已经完成,但是有数据块未能成功通过消息摘要检查"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "不能设置信号处理程序:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "已丢弃 “%s”"
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "已增加“%s”"
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "等待哈希值校验"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "正在下载"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "重新读取配置文件"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr "当同时制作多个种子时您不能指定.torrent文件名"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "此版本不支持文件系统编码“%s”"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr "无法将文件/目录名“%s”转化成utf-8格式编码(%s)。可能是指定的文件系统编码“%s”有错误或者文件名包含非法字节。"
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr "文件/目录名“%s”包含unicode保留值,无法对应到某个字符。"
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "无法读取目录"
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "无法统计文件信息"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "正在移除%s(会重新添加)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**警告**%s与%s完全相同"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**警告** %s有错误"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "...成功"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "删除%s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "完成检验"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "不能读取%s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr "不能下载或打开\n%s\n请尝试用浏览器下载种子文件。"
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "需要Python %s 或以上版本"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr "更换 RawServer 后端太晚,%s 已经被选用。"
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr "在启动%d秒之后跟踪服务器仍然没有完成发布"
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "连接到跟踪服务器有问题,gethostbyname(域名查找)失败 -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "连接到跟踪服务器有问题-"
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "跟踪服务器返回的数据有错误 -"
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "被跟踪服务器拒绝 -"
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr "由于还没能连接到任何对等客户就被跟踪服务器拒绝,文件下载被中止。"
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "来自跟踪服务器的信息:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "来自跟踪服务器的警告 -"
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr "Trackerless 查询失败:"
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr "损坏的元信息 - 不是字典类型的数据"
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr "损坏的元信息 - 信息块的主键错误"
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "损坏的元信息 - 信息块的长度非法"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "损坏的元信息 - 错误名称"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "因为安全原因%s不允许作为名字"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "单文件/多文件混合"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "损坏的元信息 - 长度错误"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "损坏的元信息 - 发现\"files\"实际上不是文件列表"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr "错误的元信息-文件内容必须是一个字典"
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "损坏的元信息 - 路径错误"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "损坏的元信息 - 路径目录错误"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "由于安全原因路径%s不允许"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "损坏的元信息 - 路径重复"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "损坏的元信息 - 有名称同时作为文件名和子目录名出现"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "损坏的元信息 - 对象类型有误"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr "损坏的元信息 - 没有发布URL的字符串"
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr "损坏的元信息 - 节点不是一个列表"
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr "损坏的元信息 - 节点只能有两个元素"
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr "损坏的元信息 - 节点主机必须是一个字符串"
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr "损坏的元信息 - 节点端口必须是一个整数"
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "失败原因必须是一个字符串"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "警告信息必须是一个字符串"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr "对等节点列表中的无效项 - 对等节点的信息应该为“字典型”"
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "对等节点列表中的无效项 - 对等的节点IP(互联网协议)应该为“字符型”"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "对等节点列表中的无效项 - 对等节点的端口应该为“整数型”"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "对等节点列表中的无效项 - 对待节点标识无效"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "非法对等客户列表"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr "发布时间间隔非法"
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr "最小发布时间间隔非法"
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "跟踪服务器id非法"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "对等客户数量非法"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "种子数非法"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "\"last\"项非法"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "用法:%s"
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[选项] [种子目录]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr "如果有参数不是作为选项出现,它将\n被看成是torrent_dir选项的值。\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[选项] [种子文件]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[选项] [种子文件]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[选项] 跟踪服务器 _URL 文件 [文件]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "参数为 -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr "(默认为"
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "未知关键字"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr "在结尾处传入了参数却没有同时传入它的值"
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr "命令行解析失败于"
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "选项%s是必须的。"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "至少要提供%d个参数。"
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "参数太多了 - 最多只能%d个。"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "%s的格式错误-%s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "监听的端口。"
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr "保存最近的下载者的信息所用的文件"
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "关闭连接所需要的超时时间"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "保存dfile的时间间隔(秒)"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr "判断下载者信息过期所需要的时间间隔(秒)"
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr "下载者在两次重新发布之间所应该等待的时间间隔(秒)"
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr "如果客户端没有指定一个数目发送回的消息中包含的默认的对等客户信息的数目"
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "两次对是否有任何连接发生超时进行检查所需要等待的时间间隔"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr "需要检查多少次来确定一个下载者是否处于NAT之后(0表示不检查)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "是否在日志中添加关于NAT检查结果的条目"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr "距离上次数据刷新后进行下一次的数据刷新所需要的最短时间间隔"
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr "认为一个缓存中的数据保存太久应该立刻进行数据刷新所需要的最短时间间隔(秒)"
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+"只允许下载这个目录(以及递归地寻找它的子目录如果该目录中本身不包含.torrent文件)中的.torrent文件。如果设置了这项参数,无论它们是否有对等客户在下载,这个目录的所有种子文件的信息都会出现在信息页面/快照页面上"
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr "允许allowed_dir中的种子文件中的特殊关键字影响跟踪器的访问"
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "在收到HUP信号时是否重新打开日志"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr "在试图加载跟踪服务器的根目录时是否显示一个信息页面"
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "一个URL,用来重定向信息页面"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr "是否显示允许的目录中的项目名称"
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr "当浏览器请求favicon.ico时,返回的包含x-icon图标数据的文件"
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+"如果发现机器不在本地网络IP地址上,是否忽略GET中的ip参数(0表示绝不,1表示绝对,2表示在NAT检查没有激活的情况下忽略)。HTTP代理在头部信息中给出的原始客户端的地址将与--ip参数同等对待。"
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "跟踪服务器的日志输出文件,使用 - 表示标准输出(默认)"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr "和allowded_dir同时使用;允许用户通过在url上增加形如/file?hash={hash}这种类型的字符串来下载一个指定的种子文件"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr "在种子已经过期后仍然保留它(这样它们仍然会出现在你的快照和信息页面上)。只有当allowed_dir没有被设置时有意义"
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr "允许快照访问的程度(可以是完全不,特定的部分和完全)"
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr "给任何请求的回应中包含的对等客户信息数量的最大数目"
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr "你要的文件可能在宇宙中的其它任何地方,\n但是,它绝对不在这,哇哈哈哈\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**警告** 指定的图标文件 -- %s -- 不存在。"
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**警告** 状态文件%s已经损坏;正在重设它"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "#日志开始:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**警告** 无法将标准输出重定向到日志文件:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "#日志重新打开:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**警告** 无法重新打开日志"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr "指定的部分的快照功能在本跟踪服务器上不提供。"
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr "完全快照功能在本跟踪服务器上不提供。"
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr "get功能在本跟踪服务器上不提供。"
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr "请求的下载项没有被授权给本跟踪服务器来使用。"
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "参数解释所需信息不足"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "#关闭:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "不能为同一个种子文件打开两个不同的实例"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "隐藏 %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "显示 %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "不是有效的已编码字符串"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr "无效的已编码值(有效前辍后紧跟数据)"
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "最大端口号比最小端口号还小 - 没有检查任何端口"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "不能打开监听端口:%s。"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "不能打开监听端口:%s。"
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "检查您的端口范围设置。"
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "初始启动"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "无法装载快速恢复数据:%s。"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "将进行完全校验。"
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "第%d块消息摘要值校验失败,重新下载"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr "在关闭无跟踪服务器客户端的情况下试图下载无跟踪服务器种子文件。"
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "下载失败:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr "输入输出错误:磁盘满,或剩余空间不足以创建此文件:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "由于输入输出错误终止:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "由于操作系统错误终止:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "由于内部异常终止:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "由于错误关闭时产生新的错误:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "失败后无法删除“快速恢复”文件:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "做种"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "不能保存“快速恢复”数据:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "关闭"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr "可能正使用一个旧版本的 Python,不支持检测文件系统编码,使用“ascii”编码。"
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr "Python 自动检测文件系统编码失败。使用“ascii”编码。"
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "不支持文件系统编码“%s”。使用“ascii”编码。"
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "非法文件路径成分:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"这个.torrent文件是由一个损坏的工具创建的,它包含了没有正确编码的文件名。可能存在部分或者全部的文件名和.torrent文件的创建者的意图不符。"
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"这个.torrent文件是由一个损坏的工具创建的,它包含了已损坏的字符值,这些值无法映射到任何真实字符。可能存在部分或者全部的文件名和.torrent文件的创建者的意图不符。"
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr "这个.torrent文件是由一个损坏的工具创建的,它包含了没有正确编码的文件名。但是使用的名称可能仍然正确。"
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr "本地文件系统上所使用的字符集(“%s”)无法表达这个种子文件中所包含的文件名中的所有字符。文件名和原始的相比已经有所改变。"
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr "Windows文件系统不能处理此torrent中文件名字中的一些字符,因此修改了文件名。"
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"这个 .torrent 文件是由一个损坏的工具创建的,至少有一个文件有非法的文件或目录名。然而由于所有的这些文件被标记为长度为 0,因此这些文件只是被简单得忽略。"
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "无法处理的命令 %s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "不能创建控制套接字:已经在使用"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "无法删除旧控制套接字的文件名:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "不能创建控制套接字:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "无法发送命令:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr "全局互斥信号已经建立"
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "无法找到一个开放的端口"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "无法创建程序数据目录"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr "无法获取控制套接字文件的全局互斥锁"
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "上一个BT程序没有正常推出,请继续."
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "另一个BT实例正在运行,但\"%s\"不存在。\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "猜测端口。"
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "找到端口:%d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "找不到端口"
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC状态 %s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr "DDE会话已连接。"
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "注销或关闭服务器套接字 %s 失败。"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "服务器套接字中断"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "接收网络连接时出错:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "由于TCP堆栈疲劳必须退出。请参考 %s 中的常见问题解答"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "接由消息类型未知。"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "超时"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..f635a03
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,2770 @@
+# BitTorrent
+# Copyright (C) 2005, BitTorrent, Inc.
+# This file is distributed under the same license as the BitTorrent package.
+# Matt Chisholm, matt (dash) translations (at) bittorrent (dot) com, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: BitTorrent 4.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-17 15:21-0800\n"
+"PO-Revision-Date: 2006-01-28 13:10-0800\n"
+"Last-Translator: SSN <ssn@263.net>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.6.3.20050806\n"
+
+#: bittorrent.py:29 maketorrent.py:23
+#, python-format
+msgid "Install Python %s or greater"
+msgstr "安裝 Python %s 或較新版本"
+
+#: bittorrent.py:132 BitTorrent/defaultargs.py:235 BitTorrent/defaultargs.py:237 bittorrent-console.py:295 bittorrent-curses.py:431
+msgid "deprecated, do not use"
+msgstr "已過時,請勿使用"
+
+#: bittorrent.py:147
+#, python-format
+msgid ""
+"Failed to communicate with another %s process but one seems to be running."
+msgstr "試圖同另一個 %s 進程(似乎正在執行)通訊時失敗。"
+
+#: bittorrent.py:149 bittorrent.py:172
+#, python-format
+msgid " Closing all %s windows may fix the problem."
+msgstr "關閉所有 %s 視窗可能可以解決問題。"
+
+#: bittorrent.py:169
+#, python-format
+msgid "%s already running"
+msgstr "%s 已在執行"
+
+#: bittorrent.py:171
+#, python-format
+msgid "Failed to communicate with another %s process."
+msgstr "無法和另一個 %s 進程溝通。"
+
+#: bittorrent.py:182 BitTorrent/GUI.py:22
+#, python-format
+msgid "PyGTK %s or newer required"
+msgstr "需要 PyGTK %s 或較新版本"
+
+#: bittorrent.py:199 bittorrent.py:1694
+msgid "drag to reorder"
+msgstr "拖曳滑鼠以重新排列"
+
+#: bittorrent.py:200 bittorrent.py:1695
+msgid "right-click for menu"
+msgstr "按滑鼠右鍵開啟功能表"
+
+#: bittorrent.py:206 bittorrent.py:391
+msgid "dialup"
+msgstr "撥接"
+
+#: bittorrent.py:207 bittorrent.py:392
+msgid "DSL/cable 128k up"
+msgstr "數位用戶線路(DSL)/纜線 128k 以上"
+
+#: bittorrent.py:208 bittorrent.py:393
+msgid "DSL/cable 256k up"
+msgstr "數位用戶線路(DSL)/纜線 256k 以上"
+
+#: bittorrent.py:209 bittorrent.py:394
+msgid "DSL 768k up"
+msgstr "數位用戶線路(DSL) 768k 以上"
+
+#: bittorrent.py:210 bittorrent.py:395
+msgid "T1"
+msgstr "T1"
+
+#: bittorrent.py:211 bittorrent.py:396
+msgid "T1/E1"
+msgstr "T1/E1"
+
+#: bittorrent.py:212 bittorrent.py:397
+msgid "E1"
+msgstr "E1"
+
+#: bittorrent.py:213 bittorrent.py:398
+msgid "T3"
+msgstr "T3"
+
+#: bittorrent.py:214 bittorrent.py:399
+msgid "OC3"
+msgstr "OC3"
+
+#: bittorrent.py:354
+msgid "Enter torrent URL"
+msgstr "輸入 torrent 的 URL 位置"
+
+#: bittorrent.py:355
+msgid "Enter the URL of a torrent file to open:"
+msgstr "輸入準備開啟的 torrent 檔案的 URL:"
+
+#: bittorrent.py:411
+msgid "Maximum upload rate:"
+msgstr "最高上傳速率:"
+
+#: bittorrent.py:474
+msgid "Temporarily stop all running torrents"
+msgstr "暫停所有執行中的 torrent"
+
+#: bittorrent.py:475
+msgid "Resume downloading"
+msgstr "繼續下載"
+
+#: bittorrent.py:514
+#, python-format
+msgid "New %s version available"
+msgstr "已推出新版本 %s"
+
+#: bittorrent.py:529
+#, python-format
+msgid "A newer version of %s is available.\n"
+msgstr "%s 已推出新版本。\n"
+
+#: bittorrent.py:530
+#, python-format
+msgid "You are using %s, and the new version is %s.\n"
+msgstr "您正在使用 %s 版本,而新的版本是 %s。\n"
+
+#: bittorrent.py:531
+#, python-format
+msgid "You can always get the latest version from \n%s"
+msgstr "請到以下位置下載最新版本︰\n%s"
+
+#: bittorrent.py:538 bittorrent.py:1919
+msgid "Download _later"
+msgstr "稍後下載(_L)"
+
+#: bittorrent.py:541 bittorrent.py:1907
+msgid "Download _now"
+msgstr "立即下載(_N)"
+
+#: bittorrent.py:547
+msgid "_Remind me later"
+msgstr "稍後提醒我(_R)"
+
+#: bittorrent.py:585
+#, python-format
+msgid "About %s"
+msgstr "關於 %s"
+
+#: bittorrent.py:600
+msgid "Beta"
+msgstr "測試版本"
+
+#: bittorrent.py:602
+#, python-format
+msgid "Version %s"
+msgstr "%s 版本"
+
+#: bittorrent.py:618
+#, python-format
+msgid "Couldn't open %s"
+msgstr "無法開啟 %s"
+
+#: bittorrent.py:637
+msgid "Donate"
+msgstr "捐款"
+
+#: bittorrent.py:657
+#, python-format
+msgid "%s Activity Log"
+msgstr "%s 使用紀錄"
+
+#: bittorrent.py:714
+msgid "Save log in:"
+msgstr "將紀錄儲存於:"
+
+#: bittorrent.py:725
+msgid "log saved"
+msgstr "已儲存紀錄"
+
+#: bittorrent.py:780
+msgid "log cleared"
+msgstr "已清除紀錄"
+
+#: bittorrent.py:810
+#, python-format
+msgid "%s Settings"
+msgstr "%s 設定"
+
+#: bittorrent.py:822
+msgid "General"
+msgstr "一般"
+
+#: bittorrent.py:825 BitTorrent/defaultargs.py:210
+msgid "Launch BitTorrent when Windows starts"
+msgstr "當 Windows 啟動時同時啟動 BitTorrent"
+
+#: bittorrent.py:831 BitTorrent/defaultargs.py:212
+msgid "Minimize to system tray"
+msgstr "最小化至系統匣內"
+
+#: bittorrent.py:837
+msgid "Progress bar text is always black\n(requires restart)"
+msgstr "進度列文字永遠使用黑色\n(需要重新啟動)"
+
+#: bittorrent.py:846
+msgid "Saving"
+msgstr "儲存"
+
+#: bittorrent.py:848
+msgid "Save new downloads in:"
+msgstr "將下載後的檔案儲存於:"
+
+#: bittorrent.py:861
+msgid "Change..."
+msgstr "變更..."
+
+#: bittorrent.py:867
+msgid "Ask where to save each new download"
+msgstr "每次都詢問欲儲存新檔案的位置"
+
+#: bittorrent.py:876
+msgid "Downloading"
+msgstr "下載"
+
+#: bittorrent.py:878
+msgid "When starting a new torrent:"
+msgstr "當開始新Torrent時:"
+
+#: bittorrent.py:887
+msgid "_Stop another running torrent to make room"
+msgstr "停止執行中的 _torrent 以騰出連接埠"
+
+#: bittorrent.py:893
+msgid "_Don't stop other running torrents"
+msgstr "不停止其它的 t_orrent"
+
+#: bittorrent.py:899
+msgid "_Ask each time"
+msgstr "每次都詢問(_A)"
+
+#: bittorrent.py:916
+msgid "Seeding"
+msgstr "作種"
+
+#: bittorrent.py:925
+msgid ""
+"Seed completed torrents: until share ratio reaches [_] percent, or for [_] minutes, whichever comes first."
+msgstr "作種完成的 torrents:直到共用率達百分之[_],或持續[_]分鐘,以先達到者為準。"
+
+#: bittorrent.py:969 bittorrent.py:1003
+msgid "Seed indefinitely"
+msgstr "種子永遠有效"
+
+#: bittorrent.py:977
+msgid "Seed last completed torrent: until share ratio reaches [_] percent."
+msgstr "將完成的 torrent 作種:直至共享率達到百分之 [_] 。"
+
+#: bittorrent.py:1015
+msgid "Network"
+msgstr "網路"
+
+#: bittorrent.py:1017
+msgid "Look for available port:"
+msgstr "搜尋可用的通訊埠:"
+
+#: bittorrent.py:1022
+msgid "starting at port: "
+msgstr "起始通訊埠:"
+
+#: bittorrent.py:1033 BitTorrent/defaultargs.py:97
+msgid "Enable automatic port mapping"
+msgstr "啟用自動連接埠映射"
+
+#: bittorrent.py:1041
+msgid "IP to report to the tracker:"
+msgstr "報告給追蹤程式的 IP 位址:"
+
+#: bittorrent.py:1046
+msgid ""
+"(Has no effect unless you are on the\nsame local network as the tracker)"
+msgstr "(除非您和追蹤程式在 \n 同一本地區域網路上,否則無效)"
+
+#: bittorrent.py:1063
+#, python-format
+msgid ""
+"WARNING: Changing these settings can\nprevent %s from functioning correctly."
+msgstr "警告:變更這些設定可能會使\n%s 無法正常運作。"
+
+#: bittorrent.py:1071
+msgid "Option"
+msgstr "選項"
+
+#: bittorrent.py:1076
+msgid "Value"
+msgstr "值"
+
+#: bittorrent.py:1083
+msgid "Advanced"
+msgstr "進階"
+
+#: bittorrent.py:1092
+msgid "Choose default download directory"
+msgstr "選擇預設的下載目錄"
+
+#: bittorrent.py:1116
+#, python-format
+msgid "Failed to remove shortcut: %s"
+msgstr "移除捷徑 %s 時失敗。"
+
+#: bittorrent.py:1165
+#, python-format
+msgid "Files in \"%s\""
+msgstr "在「%s」中的檔案"
+
+#: bittorrent.py:1177
+msgid "Never"
+msgstr "永不"
+
+#: bittorrent.py:1177
+msgid "Never download"
+msgstr "永不下載"
+
+#: bittorrent.py:1178
+msgid "Normal"
+msgstr "正常"
+
+#: bittorrent.py:1178
+msgid "Download normally"
+msgstr "正常下載"
+
+#: bittorrent.py:1179
+msgid "First"
+msgstr "優先"
+
+#: bittorrent.py:1179
+msgid "Download first"
+msgstr "優先下載"
+
+#: bittorrent.py:1189 launchmany-curses.py:148
+msgid "Filename"
+msgstr "檔案名稱"
+
+#: bittorrent.py:1189
+msgid "Length"
+msgstr "長度"
+
+#: bittorrent.py:1189
+msgid "%"
+msgstr "%"
+
+#: bittorrent.py:1192 launchmany-curses.py:143
+msgid "Download"
+msgstr "下載"
+
+#: bittorrent.py:1353
+msgid "never"
+msgstr "永不"
+
+#: bittorrent.py:1355
+msgid "first"
+msgstr "優先"
+
+#: bittorrent.py:1380
+#, python-format
+msgid "Peers for \"%s\""
+msgstr "「%s」 的對等點"
+
+#: bittorrent.py:1386
+msgid "IP address"
+msgstr "IP 位址"
+
+#: bittorrent.py:1386
+msgid "Client"
+msgstr "用戶端"
+
+#: bittorrent.py:1386
+msgid "Connection"
+msgstr "連線"
+
+#: bittorrent.py:1386
+msgid "KB/s down"
+msgstr "KB/s 下載"
+
+#: bittorrent.py:1386
+msgid "KB/s up"
+msgstr "KB/s 上傳"
+
+#: bittorrent.py:1386
+msgid "MB downloaded"
+msgstr "已下載MB"
+
+#: bittorrent.py:1386
+msgid "MB uploaded"
+msgstr "已上傳MB"
+
+#: bittorrent.py:1386
+#, fuzzy, python-format
+msgid "% complete"
+msgstr "完成%"
+
+#: bittorrent.py:1386
+msgid "KB/s est. peer download"
+msgstr "KB/s 預計下載"
+
+#: bittorrent.py:1392
+msgid "Peer ID"
+msgstr "對等點 ID"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Interested"
+msgstr "有用"
+
+#: bittorrent.py:1395 bittorrent.py:1398
+msgid "Choked"
+msgstr "堵塞"
+
+#: bittorrent.py:1395
+msgid "Snubbed"
+msgstr "靜止"
+
+#: bittorrent.py:1398
+msgid "Optimistic upload"
+msgstr ""
+
+#: bittorrent.py:1483
+msgid "remote"
+msgstr "遠端"
+
+#: bittorrent.py:1483
+msgid "local"
+msgstr "本地"
+
+#: bittorrent.py:1519
+msgid "bad peer"
+msgstr "壞的對等點"
+
+#: bittorrent.py:1529
+#, python-format
+msgid "%d ok"
+msgstr " 完成 %d"
+
+#: bittorrent.py:1530
+#, python-format
+msgid "%d bad"
+msgstr "損壞 %d"
+
+#: bittorrent.py:1532
+msgid "banned"
+msgstr "禁止"
+
+#: bittorrent.py:1534
+msgid "ok"
+msgstr "確定"
+
+#: bittorrent.py:1570
+#, python-format
+msgid "Info for \"%s\""
+msgstr "有關「%s」的資訊"
+
+#: bittorrent.py:1588
+msgid "Torrent name:"
+msgstr "Torrent 的名稱:"
+
+#: bittorrent.py:1593
+msgid "(trackerless torrent)"
+msgstr "(沒有追蹤程式的 torrent)"
+
+#: bittorrent.py:1596
+msgid "Announce url:"
+msgstr "發佈的 url:"
+
+#: bittorrent.py:1600
+msgid ", in one file"
+msgstr ",在一個檔案"
+
+#: bittorrent.py:1602
+#, python-format
+msgid ", in %d files"
+msgstr ",在 %d 個檔案"
+
+#: bittorrent.py:1603
+msgid "Total size:"
+msgstr "總計大小:"
+
+#: bittorrent.py:1610
+msgid "Pieces:"
+msgstr "片段:"
+
+#: bittorrent.py:1612
+msgid "Info hash:"
+msgstr "資料雜湊值:"
+
+#: bittorrent.py:1625
+msgid "Save in:"
+msgstr "儲存於:"
+
+#: bittorrent.py:1629
+msgid "File name:"
+msgstr "檔案名稱:"
+
+#: bittorrent.py:1655 bittorrent.py:1869
+msgid "_Open directory"
+msgstr "開啟目錄(_O)"
+
+#: bittorrent.py:1660
+msgid "Show _file list"
+msgstr "顯示檔案清單(_F)"
+
+#: bittorrent.py:1760
+msgid "Torrent info"
+msgstr "Torrent 資訊"
+
+#: bittorrent.py:1769 bittorrent.py:2232
+msgid "Remove torrent"
+msgstr "移除 torrent"
+
+#: bittorrent.py:1773
+msgid "Abort torrent"
+msgstr "中止 torrent"
+
+#: bittorrent.py:1840
+#, python-format
+msgid ", will seed for %s"
+msgstr ",作種時間為 %s"
+
+#: bittorrent.py:1842
+msgid ", will seed indefinitely."
+msgstr ",即將永遠作種。"
+
+#: bittorrent.py:1845
+#, python-format
+msgid "Done, share ratio: %d%%"
+msgstr "完成,分享率: %d%%"
+
+#: bittorrent.py:1848
+#, python-format
+msgid "Done, %s uploaded"
+msgstr "完成,已上傳 %s"
+
+#: bittorrent.py:1851 bittorrent.py:2268
+msgid "Done"
+msgstr "完成"
+
+#: bittorrent.py:1865
+msgid "Torrent _info"
+msgstr "_Torrent 資訊"
+
+#: bittorrent.py:1873
+msgid "_File list"
+msgstr "檔案清單(_F)"
+
+#: bittorrent.py:1875
+msgid "_Peer list"
+msgstr "對等點清單(_P)"
+
+#: bittorrent.py:1885
+msgid "_Change location"
+msgstr "變更位置(_C)"
+
+#: bittorrent.py:1888
+msgid "_Seed indefinitely"
+msgstr "無限期作種(_S)"
+
+#: bittorrent.py:1904
+msgid "Re_start"
+msgstr "續傳(_S)"
+
+#: bittorrent.py:1915
+msgid "_Finish"
+msgstr "完成(_F)"
+
+#: bittorrent.py:1916
+msgid "_Remove"
+msgstr "移除(_R)"
+
+#: bittorrent.py:1923
+msgid "_Abort"
+msgstr "中止(_A)"
+
+#: bittorrent.py:2011
+#, python-format
+msgid "Are you sure you want to remove \"%s\"?"
+msgstr "確定要移除「%s」?"
+
+#: bittorrent.py:2014
+#, python-format
+msgid "Your share ratio for this torrent is %d%%. "
+msgstr "這個 torrent 的分享率是 %d%% 。"
+
+#: bittorrent.py:2016
+#, python-format
+msgid "You have uploaded %s to this torrent. "
+msgstr "您已上傳 %s 到這個 torrent 。"
+
+#: bittorrent.py:2019
+msgid "Remove this torrent?"
+msgstr "是否移除這個 torrent?"
+
+#: bittorrent.py:2041
+msgid "Finished"
+msgstr "已完成"
+
+#: bittorrent.py:2042
+msgid "drag into list to seed"
+msgstr "拖曳到作種清單"
+
+#: bittorrent.py:2045
+msgid "Failed"
+msgstr "失敗"
+
+#: bittorrent.py:2046
+msgid "drag into list to resume"
+msgstr "拖曳到繼續清單"
+
+#: bittorrent.py:2105
+msgid "Waiting"
+msgstr "等待中"
+
+#: bittorrent.py:2129 BitTorrent/StatusLight.py:10
+msgid "Paused"
+msgstr "已暫停"
+
+#: bittorrent.py:2159
+msgid "Running"
+msgstr "執行中"
+
+#: bittorrent.py:2184
+#, python-format
+msgid "Current up: %s"
+msgstr "目前上傳: %s"
+
+#: bittorrent.py:2185
+#, python-format
+msgid "Current down: %s"
+msgstr "目前下載: %s"
+
+#: bittorrent.py:2191
+#, python-format
+msgid "Previous up: %s"
+msgstr "上次上傳: %s"
+
+#: bittorrent.py:2192
+#, python-format
+msgid "Previous down: %s"
+msgstr "上次下載: %s"
+
+#: bittorrent.py:2198
+#, python-format
+msgid "Share ratio: %0.02f%%"
+msgstr "分享率: %0.02f%%"
+
+#: bittorrent.py:2201
+#, python-format
+msgid "%s peers, %s seeds. Totals from tracker: %s"
+msgstr "%s 個對等點,%s 個種子,總共出自追蹤程式:%s"
+
+#: bittorrent.py:2205
+#, python-format
+msgid "Distributed copies: %d; Next: %s"
+msgstr "已流通檔案總數 %d 個;下個:%s"
+
+#: bittorrent.py:2208
+#, python-format
+msgid "Pieces: %d total, %d complete, %d partial, %d active (%d empty)"
+msgstr "片段:共 %d 段,完成 %d 段,未完成 %d 段,%d 段操作中 (%d 段空白)"
+
+#: bittorrent.py:2212
+#, python-format
+msgid "%d bad pieces + %s in discarded requests"
+msgstr "%d 段壞片段 + %s 屬於丟棄要求"
+
+#: bittorrent.py:2269
+#, python-format
+msgid "%.1f%% done, %s remaining"
+msgstr "完成 %.1f%%,剩餘 %s"
+
+#: bittorrent.py:2270
+msgid "Download rate"
+msgstr "下載速率"
+
+#: bittorrent.py:2271
+msgid "Upload rate"
+msgstr "上傳速率"
+
+#: bittorrent.py:2333
+msgid "NA"
+msgstr "不適用"
+
+#: bittorrent.py:2775
+#, python-format
+msgid "%s started"
+msgstr "%s 已開始"
+
+#: bittorrent.py:2789
+msgid "_Quit"
+msgstr "結束(_Q)"
+
+#: bittorrent.py:2786
+msgid "E_xit"
+msgstr "離開(_X)"
+
+#: bittorrent.py:2793
+msgid "_Open torrent file"
+msgstr "開啟 t_orrent 檔案"
+
+#: bittorrent.py:2794
+msgid "Open torrent _URL"
+msgstr "開啟 torrent _URL"
+
+#: bittorrent.py:2795
+msgid "Make _new torrent"
+msgstr "製作新的 torre_nt"
+
+#: bittorrent.py:2798
+msgid "_Pause/Play"
+msgstr "暫停/開始(_P)"
+
+#: bittorrent.py:2802
+msgid "Show/Hide _finished torrents"
+msgstr "顯示或隱藏完成的 _torrent"
+
+#: bittorrent.py:2804
+msgid "_Resize window to fit"
+msgstr "調整視窗尺寸(_R)"
+
+#: bittorrent.py:2806
+msgid "_Log"
+msgstr "紀錄(_L)"
+
+#: bittorrent.py:2809
+msgid "_Settings"
+msgstr "設定(_S)"
+
+#: bittorrent.py:2812 bittorrent.py:2828
+msgid "_Help"
+msgstr "說明(_H)"
+
+#: bittorrent.py:2814
+msgid "_About"
+msgstr "關於(_A)"
+
+#: bittorrent.py:2815
+msgid "_Donate"
+msgstr "捐款(_D)"
+
+#: bittorrent.py:2819
+msgid "_File"
+msgstr "檔案(_F)"
+
+#: bittorrent.py:2824
+msgid "_View"
+msgstr "檢視(_V)"
+
+#: bittorrent.py:2864
+msgid "Search for torrents"
+msgstr "搜尋 torrent"
+
+#: bittorrent.py:3018
+msgid "(stopped)"
+msgstr "(已停止)"
+
+#: bittorrent.py:3030
+msgid "(multiple)"
+msgstr "(多個)"
+
+#: bittorrent.py:3160
+#, python-format
+msgid "Already downloading %s installer"
+msgstr "已經在下載 %s 的安裝程式"
+
+#: bittorrent.py:3164
+#, python-format
+msgid "Install new %s now?"
+msgstr "現在安裝新的 %s?"
+
+#: bittorrent.py:3165
+#, python-format
+msgid "Do you want to quit %s and install the new version, %s, now?"
+msgstr "您想現在結束 %s 及安裝新的版本 (%s) 嗎?"
+
+#: bittorrent.py:3181
+#, python-format
+msgid "%s help is at \n%s\nWould you like to go there now?"
+msgstr "%s 的說明是在 %s\n您是否立即瀏覽該處?"
+
+#: bittorrent.py:3184
+msgid "Visit help web page?"
+msgstr "是否瀏覽說明網頁?"
+
+#: bittorrent.py:3221
+msgid "There is one finished torrent in the list. "
+msgstr "清單中有一個完成下載的 torrent。"
+
+#: bittorrent.py:3222
+msgid "Do you want to remove it?"
+msgstr "是否移除它?"
+
+#: bittorrent.py:3224
+#, python-format
+msgid "There are %d finished torrents in the list. "
+msgstr "清單中有 %d 個完成下載的 torrent。"
+
+#: bittorrent.py:3225
+msgid "Do you want to remove all of them?"
+msgstr "是否全部移除?"
+
+#: bittorrent.py:3227
+msgid "Remove all finished torrents?"
+msgstr "是否移除所有已經完成的 torrent?"
+
+#: bittorrent.py:3235
+msgid "No finished torrents"
+msgstr "未有任何完成下載的 torrent"
+
+#: bittorrent.py:3236
+msgid "There are no finished torrents to remove."
+msgstr "未有任何完成下載的 torrent 可以移除。"
+
+#: bittorrent.py:3290
+msgid "Open torrent:"
+msgstr "開啟 torrent:"
+
+#: bittorrent.py:3314
+msgid "Change save location for "
+msgstr "變更存檔位置"
+
+#: bittorrent.py:3341
+msgid "File exists!"
+msgstr "檔案已存在!"
+
+#: bittorrent.py:3337
+#, python-format
+msgid "\"%s\" already exists. Do you want to choose a different file name?"
+msgstr "「%s」 已經存在。是否選擇另一個檔案名稱?"
+
+#: bittorrent.py:3361
+msgid "Save location for "
+msgstr "存檔位置"
+
+#: bittorrent.py:3379
+msgid "Directory exists!"
+msgstr "目錄已經存在!"
+
+#: bittorrent.py:3375
+#, python-format
+msgid ""
+"\"%s\" already exists. Do you intend to create an identical, duplicate directory inside the existing directory?"
+msgstr "「%s」 已經存在。您是否要在現有目錄中開啟一個一模一樣的目錄?"
+
+#: bittorrent.py:3504
+#, python-format
+msgid "(global message) : %s"
+msgstr "(全域訊息):%s"
+
+#: bittorrent.py:3511
+#, python-format
+msgid "%s Error"
+msgstr "%s 錯誤"
+
+#: bittorrent.py:3517
+msgid "Multiple errors have occurred. Click OK to view the error log."
+msgstr "出現了多個錯誤。請按「確定」以檢視錯誤紀錄。"
+
+#: bittorrent.py:3687
+msgid "Stop running torrent?"
+msgstr "是否停止 torrent 的執行?"
+
+#: bittorrent.py:3680
+#, python-format
+msgid ""
+"You are about to start \"%s\". Do you want to stop another running torrent as well?"
+msgstr "您準備開始執行「%s」。是否停止另一個執行中的 torrent?"
+
+#: bittorrent.py:3699
+msgid "Have you donated?"
+msgstr "您已經捐款了嗎?"
+
+#: bittorrent.py:3700
+#, python-format
+msgid "Welcome to the new version of %s. Have you donated?"
+msgstr "歡迎使用新版本的 %s。您已經捐款了嗎?"
+
+#: bittorrent.py:3715
+msgid "Thanks!"
+msgstr "謝謝!"
+
+#: bittorrent.py:3716
+msgid ""
+"Thanks for donating! To donate again, select \"Donate\" from the \"Help\" menu."
+msgstr "感謝您捐款!如果希望再捐款,可以在「說明」選單上點選「捐款」。"
+
+#: bittorrent.py:3822
+msgid "Could not start the TorrentQueue, see above for errors."
+msgstr "無法啟動 torrent 序列,請參閱上方的錯誤原因。"
+
+#: maketorrent.py:60
+#, python-format
+msgid "%s torrent file creator %s"
+msgstr "%s torrent 檔案製作器 %s"
+
+#: maketorrent.py:72
+msgid "Make torrent file for this file/directory:"
+msgstr "為此檔案/目錄製作 torrent 檔案:"
+
+#: maketorrent.py:77
+msgid "Choose..."
+msgstr "選擇..."
+
+#: maketorrent.py:87
+msgid "(Directories will become batch torrents)"
+msgstr "(目錄會變成批次 torrents)"
+
+#: maketorrent.py:98
+msgid "Piece size:"
+msgstr "片段大小:"
+
+#: maketorrent.py:117
+msgid "Use _tracker:"
+msgstr "使用追蹤程式(_T):"
+
+#: maketorrent.py:147
+msgid "Use _DHT:"
+msgstr "使用 _DHT:"
+
+#: maketorrent.py:153
+msgid "Nodes (optional):"
+msgstr "節點(選擇性項目):"
+
+#: maketorrent.py:186
+msgid "Comments:"
+msgstr "備註:"
+
+#: maketorrent.py:234
+msgid "_Make"
+msgstr "製作(_M)"
+
+#: maketorrent.py:381
+msgid "_Host"
+msgstr "主機(_H)"
+
+#: maketorrent.py:388
+msgid "_Port"
+msgstr "埠號(_P)"
+
+#: maketorrent.py:481
+msgid "Building torrents..."
+msgstr "正在產生 torrent..."
+
+#: maketorrent.py:489
+msgid "Checking file sizes..."
+msgstr "正在檢查檔案大小..."
+
+#: maketorrent.py:507
+msgid "Start seeding"
+msgstr "開始作種"
+
+#: maketorrent.py:527
+msgid "building "
+msgstr "正在製作"
+
+#: maketorrent.py:547
+msgid "Done."
+msgstr "完成。"
+
+#: maketorrent.py:548
+msgid "Done building torrents."
+msgstr "完成產生 torrent 檔案。"
+
+#: maketorrent.py:556
+msgid "Error!"
+msgstr "錯誤!"
+
+#: maketorrent.py:557
+msgid "Error building torrents: "
+msgstr "產生 torrent 檔時發生錯誤:"
+
+#: BitTorrent/GUI.py:21
+#, python-format
+msgid "GTK %s or newer required"
+msgstr "需要 GTK %s 或以上版本"
+
+#: BitTorrent/GUI.py:202
+#, python-format
+msgid "%d days"
+msgstr "%d 天"
+
+#: BitTorrent/GUI.py:204
+#, python-format
+msgid "1 day %d hours"
+msgstr "1 天 %d 小時"
+
+#: BitTorrent/GUI.py:206
+#, python-format
+msgid "%d:%02d hours"
+msgstr "%d:%02d 小時"
+
+#: BitTorrent/GUI.py:208
+#, python-format
+msgid "%d:%02d minutes"
+msgstr "%d:%02d 分鐘"
+
+#: BitTorrent/GUI.py:210
+#, python-format
+msgid "%d seconds"
+msgstr "%d 秒"
+
+#: BitTorrent/GUI.py:212
+msgid "0 seconds"
+msgstr "0 秒"
+
+#: BitTorrent/GUI.py:292
+#, python-format
+msgid "%s Help"
+msgstr "%s 說明文件"
+
+#: BitTorrent/GUI.py:299
+msgid "Frequently Asked Questions:"
+msgstr "常見問答集:"
+
+#: BitTorrent/GUI.py:304
+msgid "Go"
+msgstr "前往"
+
+#: BitTorrent/GUI.py:463 BitTorrent/GUI.py:517
+msgid "Choose an existing folder..."
+msgstr "選擇現有的資料夾..."
+
+#: BitTorrent/GUI.py:473
+msgid "All Files"
+msgstr "所有檔案"
+
+#: BitTorrent/GUI.py:478
+msgid "Torrents"
+msgstr "Torrents"
+
+#: BitTorrent/GUI.py:514
+msgid "Create a new folder..."
+msgstr "建立新資料夾..."
+
+#: BitTorrent/GUI.py:583
+msgid "Select a file"
+msgstr "選擇檔案"
+
+#: BitTorrent/GUI.py:584
+msgid "Select a folder"
+msgstr "選擇資料夾"
+
+#: BitTorrent/TorrentQueue.py:119
+msgid "Could not load saved state: "
+msgstr "無法載入已儲存的狀態: "
+
+#: BitTorrent/TorrentQueue.py:211
+msgid "Could not save UI state: "
+msgstr "無法儲存圖形介面狀態:"
+
+#: BitTorrent/TorrentQueue.py:221 BitTorrent/TorrentQueue.py:223 BitTorrent/TorrentQueue.py:306 BitTorrent/TorrentQueue.py:309 BitTorrent/TorrentQueue.py:319 BitTorrent/TorrentQueue.py:331 BitTorrent/TorrentQueue.py:348
+msgid "Invalid state file contents"
+msgstr "狀態檔案內容無效"
+
+#: BitTorrent/TorrentQueue.py:236
+#, python-format
+msgid "Error reading file \"%s\"."
+msgstr "讀取檔案「%s」時發生錯誤。"
+
+#: BitTorrent/TorrentQueue.py:238
+msgid "cannot restore state completely"
+msgstr "無法完全回復狀態"
+
+#: BitTorrent/TorrentQueue.py:241
+msgid "Invalid state file (duplicate entry)"
+msgstr "狀態檔案無效 (出現重複項目)"
+
+#: BitTorrent/TorrentQueue.py:248 BitTorrent/TorrentQueue.py:254
+#, python-format
+msgid "Corrupt data in \"%s\", cannot restore torrent."
+msgstr "「%s」中有損壞的資料,無法回復 torrent 內容。"
+
+#: BitTorrent/TorrentQueue.py:255
+msgid "(infohash mismatch)"
+msgstr "(哈希值不匹配)"
+
+#: BitTorrent/TorrentQueue.py:273
+msgid "Invalid state file (bad entry)"
+msgstr "狀態檔案無效 (項目錯誤)"
+
+#: BitTorrent/TorrentQueue.py:296
+msgid "Bad UI state file"
+msgstr "圖形介面狀態檔案損毀"
+
+#: BitTorrent/TorrentQueue.py:300
+msgid "Bad UI state file version"
+msgstr "圖形介面狀態檔案的版本無效"
+
+#: BitTorrent/TorrentQueue.py:302
+msgid "Unsupported UI state file version (from newer client version?)"
+msgstr "不支援此圖形介面狀態檔案的版本(來自新的程式版本?)"
+
+#: BitTorrent/TorrentQueue.py:493
+#, python-format
+msgid "Could not delete cached %s file:"
+msgstr "無法刪除快取記憶中的 %s 檔案:"
+
+#: BitTorrent/TorrentQueue.py:534
+#, python-format
+msgid "This is not a valid torrent file. (%s)"
+msgstr "這個 torrent 檔案無效。(%s)"
+
+#: BitTorrent/TorrentQueue.py:542
+msgid "This torrent (or one with the same contents) is already running."
+msgstr "這個 (或者另一個同樣內容的) torrent 檔案已經在執行中。"
+
+#: BitTorrent/TorrentQueue.py:546
+msgid "This torrent (or one with the same contents) is already waiting to run."
+msgstr "這個 (或者另一個同樣內容的) torrent 檔已經準備好可供執行。"
+
+#: BitTorrent/TorrentQueue.py:553
+#, python-format
+msgid "Torrent in unknown state %d"
+msgstr "Torrent 在未知狀態 %d"
+
+#: BitTorrent/TorrentQueue.py:570
+msgid "Could not write file "
+msgstr "無法寫入檔案"
+
+#: BitTorrent/TorrentQueue.py:572
+msgid "torrent will not be restarted correctly on client restart"
+msgstr "用戶端重新啟動後,torrent 也不會正確地重新啟動"
+
+#: BitTorrent/TorrentQueue.py:675
+#, python-format
+msgid ""
+"Can't run more than %d torrents simultaneously. For more info see the FAQ at %s."
+msgstr "不可以同時執行多於 %d 個 torrent。如果需要額外資訊,請閱讀 %s 的常見問答集。"
+
+#: BitTorrent/TorrentQueue.py:799
+msgid ""
+"Not starting torrent as there are other torrents waiting to run, and this one already meets the settings for when to stop seeding."
+msgstr "沒有開始 torrent,因為另外的 torrent 正在等待執行,及這個 torrent 已經符合停止作種的條件。"
+
+#: BitTorrent/TorrentQueue.py:806
+msgid ""
+"Not starting torrent as it already meets the settings for when to stop seeding the last completed torrent."
+msgstr "沒有開始 torrent,因為它符合了停止將最後完成的 torrent 作種的規定。"
+
+#: BitTorrent/NewVersion.py:105
+#, python-format
+msgid "Could not get latest version from %s"
+msgstr "不能由 %s 取得最新版本"
+
+#: BitTorrent/NewVersion.py:110
+#, python-format
+msgid "Could not parse new version string from %s"
+msgstr "未能從 %s 分析最新版本字串"
+
+#: BitTorrent/NewVersion.py:241
+#, python-format
+msgid ""
+"Could not find a suitable temporary location to save the %s %s installer."
+msgstr "未能找到一個適合的臨時位置來儲存 %s %s 安裝程式"
+
+#: BitTorrent/NewVersion.py:260
+#, python-format
+msgid "No torrent file available for %s %s installer."
+msgstr "沒有 torrent 檔案可用於 %s %s 安裝程式。"
+
+#: BitTorrent/NewVersion.py:270
+#, python-format
+msgid "%s %s installer appears to be incomplete, missing, or corrupt."
+msgstr "%s %s 安裝程式似乎是不完整,不見了或者已經損壞。"
+
+#: BitTorrent/NewVersion.py:278
+msgid "Cannot launch installer on this OS"
+msgstr "不能在這作業系統下啟動安裝程式"
+
+#: BitTorrent/StatusLight.py:12
+msgid "No torrents"
+msgstr "沒有 torrent"
+
+#: BitTorrent/StatusLight.py:14 BitTorrent/StatusLight.py:16
+msgid "Starting download"
+msgstr "開始下載"
+
+#: BitTorrent/StatusLight.py:18
+msgid "Running normally"
+msgstr "正常執行中"
+
+#: BitTorrent/StatusLight.py:20
+msgid "Downloads may be slow:\nProbably firewalled/NATted"
+msgstr "下載速度會較慢:\n可能被防火牆遮擋或藏在 NAT 之後"
+
+#: BitTorrent/StatusLight.py:22
+msgid "Check network connection"
+msgstr "檢查網路連線"
+
+#: BitTorrent/defaultargs.py:48
+msgid ""
+"directory under which variable data such as fastresume information and GUI state is saved. Defaults to subdirectory 'data' of the bittorrent config directory."
+msgstr "用來儲存可變資料 (例如快速續傳資料或介面狀態) 的目錄。預設為 bittorrent 設定檔目錄下的「data」子目錄。"
+
+#: BitTorrent/defaultargs.py:52
+msgid ""
+"character encoding used on the local filesystem. If left empty, autodetected. Autodetection doesn't work under python versions older than 2.3"
+msgstr "這裡指定本地檔案系統所用的文字編碼,如果不填則會自動偵測。但 python 2.3 之前的版本不能使用自動偵測功能。"
+
+#: BitTorrent/defaultargs.py:56
+msgid "ISO Language code to use"
+msgstr "要使用的 ISO 語言代碼"
+
+#: BitTorrent/defaultargs.py:61
+msgid ""
+"ip to report to the tracker (has no effect unless you are on the same local network as the tracker)"
+msgstr "報告給追蹤程式的 IP 地址 (除非與追蹤程式在同一本地網路,否則無效)"
+
+#: BitTorrent/defaultargs.py:64
+msgid ""
+"world-visible port number if it's different from the one the client listens on locally"
+msgstr "別人所見的埠號 (如果這個埠號和程式實際上所開啟的不同)"
+
+#: BitTorrent/defaultargs.py:67
+msgid "minimum port to listen on, counts up if unavailable"
+msgstr "要開啟的埠號數值下限,當不可使用時會遞增"
+
+#: BitTorrent/defaultargs.py:69
+msgid "maximum port to listen on"
+msgstr "會開啟的埠號數值上限"
+
+#: BitTorrent/defaultargs.py:71 BitTorrent/track.py:44
+msgid "ip to bind to locally"
+msgstr "與本地端連結的 IP"
+
+#: BitTorrent/defaultargs.py:73
+msgid "seconds between updates of displayed information"
+msgstr "顯示更新資訊的間隔秒數"
+
+#: BitTorrent/defaultargs.py:75
+msgid "minutes to wait between requesting more peers"
+msgstr "等待請求更多對等點的分鐘數"
+
+#: BitTorrent/defaultargs.py:77
+msgid "minimum number of peers to not do rerequesting"
+msgstr "對等點的最少數目,低於此數值的話不會重新請求對等點"
+
+#: BitTorrent/defaultargs.py:79
+msgid "number of peers at which to stop initiating new connections"
+msgstr "對等點數目上限,高於此數值則不建立新連線"
+
+#: BitTorrent/defaultargs.py:81
+msgid "max number of outgoing incomplete connections"
+msgstr "最大上傳連接數"
+
+#: BitTorrent/defaultargs.py:83
+msgid ""
+"maximum number of connections to allow, after this new incoming connections will be immediately closed"
+msgstr "允許連線的數目上限,超過此限制會立即關閉所有新連線"
+
+#: BitTorrent/defaultargs.py:86
+msgid "whether to check hashes on disk"
+msgstr "是否檢查磁碟上的雜湊值"
+
+#: BitTorrent/defaultargs.py:88
+msgid "maximum kB/s to upload at, 0 means no limit"
+msgstr "上傳速度上限 (kB/s 為單位, 0 表示不設限)"
+
+#: BitTorrent/defaultargs.py:90
+msgid "the number of uploads to fill out to with extra optimistic unchokes"
+msgstr "使用額外最佳壅塞填滿上傳的數目"
+
+#: BitTorrent/defaultargs.py:92
+msgid ""
+"the maximum number of files in a multifile torrent to keep open at a time, 0 means no limit. Used to avoid running out of file descriptors."
+msgstr "在處理一個包含多個檔案的 torrent 的時候,最多同時打開的檔案數目,0 表示沒有限制。使用本選項可以避免檔案描述字元用盡。"
+
+#: BitTorrent/defaultargs.py:95
+msgid ""
+"Initialize a trackerless client. This must be enabled in order to download trackerless torrents."
+msgstr "啟動無追蹤程式的用戶端。本選項必須啟用才能下載沒有追蹤程式的 torrent。"
+
+#: BitTorrent/defaultargs.py:103
+msgid "number of seconds to pause between sending keepalives"
+msgstr "每隔多少秒送出保持連線的要求"
+
+#: BitTorrent/defaultargs.py:105
+msgid "how many bytes to query for per request."
+msgstr "每次要求讀取多少位元組。"
+
+#: BitTorrent/defaultargs.py:107
+msgid ""
+"maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped."
+msgstr "將透過連線接受的字首編碼的最長長度 — 數值太大可能會中斷連線。"
+
+#: BitTorrent/defaultargs.py:110
+msgid ""
+"seconds to wait between closing sockets which nothing has been received on"
+msgstr "等多少秒鐘後仍沒有收到任何資料則關閉 socket"
+
+#: BitTorrent/defaultargs.py:113
+msgid "seconds to wait between checking if any connections have timed out"
+msgstr "每隔多少秒鐘檢查一次連線是否已經逾時"
+
+#: BitTorrent/defaultargs.py:115
+msgid ""
+"maximum length slice to send to peers, close connection if a larger request is received"
+msgstr "送到對方的檔案片段長度上限,如果收到較大的要求則關閉連線"
+
+#: BitTorrent/defaultargs.py:118
+msgid ""
+"maximum time interval over which to estimate the current upload and download rates"
+msgstr "評估目前上傳與下載速率的最大時間間隔"
+
+#: BitTorrent/defaultargs.py:120
+msgid "maximum time interval over which to estimate the current seed rate"
+msgstr "評估目前作種速率的最大時間間隔"
+
+#: BitTorrent/defaultargs.py:122
+msgid "maximum time to wait between retrying announces if they keep failing"
+msgstr "當發佈持續失敗時的最大重試時間"
+
+#: BitTorrent/defaultargs.py:124
+msgid ""
+"seconds to wait for data to come in over a connection before assuming it's semi-permanently choked"
+msgstr "等待假設半永久壅塞時,等待資料進入的秒數"
+
+#: BitTorrent/defaultargs.py:127
+msgid "number of downloads at which to switch from random to rarest first"
+msgstr "從隨機更換到最稀有者優先所需要的下載數目"
+
+#: BitTorrent/defaultargs.py:129
+msgid "how many bytes to write into network buffers at once."
+msgstr "每一次寫多少位元組到網路緩衝區。"
+
+#: BitTorrent/defaultargs.py:131
+msgid ""
+"refuse further connections from addresses with broken or intentionally hostile peers that send incorrect data"
+msgstr "如果對方因為軟體有錯誤或者帶惡意地送出錯誤資料,拒絕來自這類位址的連線"
+
+#: BitTorrent/defaultargs.py:134
+msgid "do not connect to several peers that have the same IP address"
+msgstr "不要連接到擁有來自相同 IP 地址的幾個對等點"
+
+#: BitTorrent/defaultargs.py:136
+msgid "if nonzero, set the TOS option for peer connections to this value"
+msgstr "如果不是零,則將對等點連接的 TOS 選項設置為這個值"
+
+#: BitTorrent/defaultargs.py:138
+msgid ""
+"enable workaround for a bug in BSD libc that makes file reads very slow."
+msgstr "避開 BSD libc 的一個問題,這問題會令讀取檔案時非常緩慢。"
+
+#: BitTorrent/defaultargs.py:140
+msgid "address of HTTP proxy to use for tracker connections"
+msgstr "追蹤程式連線所用的 HTTP 代理伺服器位址"
+
+#: BitTorrent/defaultargs.py:142 BitTorrent/track.py:48
+msgid "close connections with RST and avoid the TCP TIME_WAIT state"
+msgstr "使用 RST 方式關閉連線,避免 TCP 連線進入 TIME_WAIT 狀態"
+
+#: BitTorrent/defaultargs.py:144 BitTorrent/track.py:111
+msgid ""
+"Use Twisted network libraries for network connections. 1 means use twisted, 0 means do not use twisted, -1 means autodetect, and prefer twisted"
+msgstr "網路連線使用 Twisted 網路函式庫。1 表示使用,0 表示不使用,-1 表示自動偵測,並偏好使用該函式庫"
+
+#: BitTorrent/defaultargs.py:161
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in, if neither is specified the user will be asked for save location"
+msgstr ""
+"另存 torrent 時使用的檔案名稱 (單檔案 torrent) 或目錄名稱 (批次 torrents)。請參閱 --save_in 選項,如果沒有指定,則會向用戶詢問儲存位置"
+
+#: BitTorrent/defaultargs.py:166
+msgid "display advanced user interface"
+msgstr "顯示進階使用者介面"
+
+#: BitTorrent/defaultargs.py:168
+msgid ""
+"the maximum number of minutes to seed a completed torrent before stopping seeding"
+msgstr "將一個已完成的 torrent 最多作種多少分鐘,然後停止"
+
+#: BitTorrent/defaultargs.py:171
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding. 0 means no limit."
+msgstr "停止作種之前,要達到指定的上傳/下載比例下限(百分比)。0 表示無限制。"
+
+#: BitTorrent/defaultargs.py:174
+msgid ""
+"the minimum upload/download ratio, in percent, to achieve before stopping seeding the last torrent. 0 means no limit."
+msgstr "最後一個 torrent 停止作種之前,要達到指定的上傳/下載比例下限 (百分比)。0 表示無限制。"
+
+#: BitTorrent/defaultargs.py:177
+msgid "Seed each completed torrent indefinitely (until the user cancels it)"
+msgstr "將每個已完成的 torrent 永遠作種 (直至用戶取消)"
+
+#: BitTorrent/defaultargs.py:180
+msgid "Seed the last torrent indefinitely (until the user cancels it)"
+msgstr "將最後完成的 torrent 永遠作種 (直至用戶取消)"
+
+#: BitTorrent/defaultargs.py:183
+msgid "start downloader in paused state"
+msgstr "在暫停狀態下開始下載程式"
+
+#: BitTorrent/defaultargs.py:185
+msgid ""
+"specifies how the app should behave when the user manually tries to start another torrent: \"replace\" means always replace the running torrent with the new one, \"add\" means always add the running torrent in parallel, and \"ask\" means ask the user each time."
+msgstr ""
+"指定當用戶嘗試啟動另一個 torrent 時,程式該如何處理:「replace」表示用新的 torrent 更換執行中的 torrent,「add」表示和執行中的 torrent 一起運作,而「ask」則表示每次皆詢問用戶"
+
+#: BitTorrent/defaultargs.py:195
+msgid "Start BitTorrent minimized"
+msgstr "啟動 BitTorrent 時將其最小化"
+
+#: BitTorrent/defaultargs.py:197
+msgid ""
+"override the version provided by the http version check and enable version check debugging mode"
+msgstr "覆蓋 http 版本檢查所獲取的版本號,啟用版本檢查偵錯模式。"
+
+#: BitTorrent/defaultargs.py:200
+msgid ""
+"override the current version used in the version check and enable version check debugging mode"
+msgstr "覆蓋當前版本檢查中所用的版本號,啟用版本檢查偵錯模式。"
+
+#: BitTorrent/defaultargs.py:203
+msgid ""
+"specify window size and position, in the format: WIDTHxHEIGHT+XOFFSET+YOFFSET"
+msgstr "指定視窗尺寸和位置,格式為:WIDTHxHEIGHT+XOFFSET+YOFFSET"
+
+#: BitTorrent/defaultargs.py:218
+msgid ""
+"file name (for single-file torrents) or directory name (for batch torrents) to save the torrent as, overriding the default name in the torrent. See also --save_in"
+msgstr ""
+"另存 torrent 檔所用的檔案名稱 (單檔案 torrent) 或者目錄名稱 (批次 torrent)。請參閱 --save_in 選項。"
+
+#: BitTorrent/defaultargs.py:225 BitTorrent/defaultargs.py:245
+msgid ""
+"the maximum number of uploads to allow at once. -1 means a (hopefully) reasonable number based on --max_upload_rate. The automatic values are only sensible when running one torrent at a time."
+msgstr ""
+"能同時上傳的數目上限。-1 表示依據 --max_upload_rate 估計合理數目。只有當每次執行一個 torrent 時自動偵測的數值才會有用。"
+
+#: BitTorrent/defaultargs.py:230
+msgid ""
+"local directory where the torrent contents will be saved. The file (single-file torrents) or directory (batch torrents) will be created under this directory using the default name specified in the .torrent file. See also --save_as."
+msgstr ""
+"將儲存 torrent 內容的本地目錄。檔案 (單檔案 torrent) 或目錄 (批次 torrent) 會儲存在這個目錄之下,並使用 .torrent 檔案中指定的預設檔案或目錄名稱。請參閱 --save_as 選項。"
+
+#: BitTorrent/defaultargs.py:239
+msgid "whether or not to ask for a location to save downloaded files in"
+msgstr "是否詢問下載檔案時的儲存位置"
+
+#: BitTorrent/defaultargs.py:250
+msgid ""
+"local directory where the torrents will be saved, using a name determined by --saveas_style. If this is left empty each torrent will be saved under the directory of the corresponding .torrent file"
+msgstr ""
+"根據 --saveas_style 的名稱,決定儲存 torrents 檔案時的本地目錄。如果不填,則每個檔案都儲存在相應的 .torrent 檔的目錄之下"
+
+#: BitTorrent/defaultargs.py:255 BitTorrent/track.py:77
+msgid "how often to rescan the torrent directory, in seconds"
+msgstr "每隔多少秒鐘掃描一次 torrent 目錄"
+
+#: BitTorrent/defaultargs.py:257
+msgid ""
+"wait this many seconds after noticing a torrent before starting it, to avoid race with tracker"
+msgstr "通知 torrent 後等待指定秒數方才啟動,避免和追蹤程式在時間上起衝突"
+
+#: BitTorrent/defaultargs.py:259
+msgid ""
+"How to name torrent downloads: 1: use name OF torrent file (minus .torrent); 2: use name encoded IN torrent file; 3: create a directory with name OF torrent file (minus .torrent) and save in that directory using name encoded IN torrent file; 4: if name OF torrent file (minus .torrent) and name encoded IN torrent file are identical, use that name (style 1/2), otherwise create an intermediate directory as in style 3; CAUTION: options 1 and 2 have the ability to overwrite files without warning and may present security issues."
+msgstr ""
+"如何決定 torrent 下載時的檔案名稱:\n1:直接使用 torrent 本身的檔案名稱 (去除 .torrent 部份)\n2:使用 torrent 內部指定的檔案名稱\n3:建立一個以 torrent 本身 (去除 .torrent 部份) 命名的目錄並且把下載內容儲存到這個目錄裡,而檔案名稱使用 torrent 檔內部指定的名稱\n4:如果 torrent 檔案本身的名稱 (去除 .torrent 部份) 和內部指定的名稱一致,使用這個名稱 (方案 1 或 2),否則按照方案 3 建立一個新的目錄來儲存\n注意:方案 1 和 2 有可能在不發出警告的情況下覆蓋檔案,因此可能會存在一定的安全威脅。"
+
+#: BitTorrent/defaultargs.py:274
+msgid ""
+"whether to display the full path or the torrent contents for each torrent"
+msgstr "是否顯示每個 torrent 的完整路徑或者 torrent 內容"
+
+#: BitTorrent/defaultargs.py:281
+msgid "directory to look for .torrent files (semi-recursive)"
+msgstr "尋找 .torrent 檔案的目錄(半遞歸)"
+
+#: BitTorrent/defaultargs.py:286
+msgid "whether to display diagnostic info to stdout"
+msgstr "是否在標準輸出顯示診斷資訊"
+
+#: BitTorrent/defaultargs.py:291
+msgid "which power of two to set the piece size to"
+msgstr "將每個片段的大小設定為 2 的多少次方"
+
+#: BitTorrent/defaultargs.py:293
+msgid "default tracker name"
+msgstr "預設的追蹤程式名稱"
+
+#: BitTorrent/defaultargs.py:296
+msgid ""
+"if false then make a trackerless torrent, instead of announce URL, use reliable node in form of <ip>:<port> or an empty string to pull some nodes from your routing table"
+msgstr ""
+"如果是「false」,則製作無追蹤程式的 torrent,而不發佈 URL,使用 <ip>:<port> 形式的可靠節點,或空白的字串以從您的電腦的路由表中搜尋節點"
+
+#: bittorrent-console.py:41 bittorrent-curses.py:60
+msgid "download complete!"
+msgstr "下載完成!"
+
+#: bittorrent-console.py:46 bittorrent-curses.py:65
+msgid "<unknown>"
+msgstr "<未知>"
+
+#: bittorrent-console.py:49 bittorrent-curses.py:68
+#, python-format
+msgid "finishing in %d:%02d:%02d"
+msgstr "完成於 %d:%02d:%02d"
+
+#: bittorrent-console.py:96 bittorrent-curses.py:174
+msgid "download succeeded"
+msgstr "下載成功"
+
+#: bittorrent-console.py:130 bittorrent-curses.py:231
+#, python-format
+msgid "oo (%.1f MB up / %.1f MB down)"
+msgstr "oo (上傳 %.1f MB / 下載 %.1f MB)"
+
+#: bittorrent-console.py:133 bittorrent-curses.py:234
+#, python-format
+msgid "%.3f (%.1f MB up / %.1f MB down)"
+msgstr "%.3f (上傳 %.1f MB / 下載 %.1f MB)"
+
+#: bittorrent-console.py:139
+#, python-format
+msgid "%d seen now, plus %d distributed copies (%s)"
+msgstr "見到 %d 個檔案,加上 %d 個已流通的檔案 (%s)"
+
+#: bittorrent-console.py:144 bittorrent-curses.py:245
+#, python-format
+msgid "%d distributed copies (next: %s)"
+msgstr "已流通 %d 個檔案 (下個: %s)"
+
+#: bittorrent-console.py:146 bittorrent-curses.py:247
+#, python-format
+msgid "%d seen now"
+msgstr "見到 %d 個檔案"
+
+#: bittorrent-console.py:149
+msgid "ERROR:\n"
+msgstr "錯誤:\n"
+
+#: bittorrent-console.py:150
+msgid "saving: "
+msgstr "儲存中:"
+
+#: bittorrent-console.py:151
+msgid "file size: "
+msgstr "檔案大小:"
+
+#: bittorrent-console.py:152
+msgid "percent done: "
+msgstr "完成百分比:"
+
+#: bittorrent-console.py:153
+msgid "time left: "
+msgstr "剩下時間:"
+
+#: bittorrent-console.py:154
+msgid "download to: "
+msgstr "下載到:"
+
+#: bittorrent-console.py:155
+msgid "download rate: "
+msgstr "下載率:"
+
+#: bittorrent-console.py:156
+msgid "upload rate: "
+msgstr "上載率:"
+
+#: bittorrent-console.py:157
+msgid "share rating: "
+msgstr "共享率:"
+
+#: bittorrent-console.py:158
+msgid "seed status: "
+msgstr "種子狀態:"
+
+#: bittorrent-console.py:159
+msgid "peer status: "
+msgstr "對等點狀態:"
+
+#: bittorrent-console.py:222 bittorrent-curses.py:358
+msgid "You cannot specify both --save_as and --save_in"
+msgstr "不可以同時使用 --save_as 和 --save_in 選項"
+
+#: bittorrent-console.py:240 bittorrent-curses.py:376 BitTorrent/launchmanycore.py:69
+msgid "shutting down"
+msgstr "關閉中"
+
+#: bittorrent-console.py:247 bittorrent-curses.py:383 BitTorrent/launchmanycore.py:235
+msgid "Error reading config: "
+msgstr "讀取設定時發生錯誤: "
+
+#: bittorrent-console.py:300 bittorrent-curses.py:436
+msgid "Error reading .torrent file: "
+msgstr "讀取 .torrent 檔案時發生錯誤"
+
+#: bittorrent-console.py:302 bittorrent-curses.py:438
+msgid "you must specify a .torrent file"
+msgstr "您必須指定一個 .torrent 檔案"
+
+#: bittorrent-curses.py:48 launchmany-curses.py:40
+msgid "Textmode GUI initialization failed, cannot proceed."
+msgstr "文字模式介面不能啟動,無法繼續。"
+
+#: bittorrent-curses.py:50 launchmany-curses.py:42
+msgid ""
+"This download interface requires the standard Python module \"curses\", which is unfortunately not available for the native Windows port of Python. It is however available for the Cygwin port of Python, running on all Win32 systems (www.cygwin.com)."
+msgstr ""
+"這個下載介面需要 Python 的 curses 模組,但可惜 Python 的 Windows 移植版沒有該模組。然而 Python 的 Cygwin (www.cygwin.com) 移植版本有該模組,而且可以在所有 Win32 平台上使用。"
+
+#: bittorrent-curses.py:55
+msgid "You may still use \"bittorrent-console\" to download."
+msgstr "您仍然可以使用「bittorrent-console」去下載。"
+
+#: bittorrent-curses.py:156
+msgid "file:"
+msgstr "檔案:"
+
+#: bittorrent-curses.py:157
+msgid "size:"
+msgstr "大小:"
+
+#: bittorrent-curses.py:158
+msgid "dest:"
+msgstr "目的地:"
+
+#: bittorrent-curses.py:159
+msgid "progress:"
+msgstr "進展:"
+
+#: bittorrent-curses.py:160
+msgid "status:"
+msgstr "狀態:"
+
+#: bittorrent-curses.py:161
+msgid "dl speed:"
+msgstr "下載速度:"
+
+#: bittorrent-curses.py:162
+msgid "ul speed:"
+msgstr "上載速度:"
+
+#: bittorrent-curses.py:163
+msgid "sharing:"
+msgstr "分享:"
+
+#: bittorrent-curses.py:164
+msgid "seeds:"
+msgstr "種子:"
+
+#: bittorrent-curses.py:165
+msgid "peers:"
+msgstr "對等點:"
+
+#: bittorrent-curses.py:240
+#, python-format
+msgid "%d seen now, plus %d distributed copies(%s)"
+msgstr "見到 %d 個檔案,加上已流通 %d 個檔案 (%s)"
+
+#: bittorrent-curses.py:267
+msgid "error(s):"
+msgstr "錯誤:"
+
+#: bittorrent-curses.py:276
+msgid "error:"
+msgstr "錯誤:"
+
+#: bittorrent-curses.py:279
+msgid ""
+" # IP Upload Download Completed Speed"
+msgstr "# IP 上載下載完成的速度"
+
+#: bittorrent-curses.py:324
+#, python-format
+msgid "downloading %d pieces, have %d fragments, %d of %d pieces completed"
+msgstr "正在下載 %d 段片段,總共有 %d 段,%d 中的 %d 已經完成"
+
+#: bittorrent-curses.py:448
+msgid "These errors occurred during execution:"
+msgstr "執行時發生以下這些錯誤:"
+
+#: changetracker-console.py:23
+#, python-format
+msgid "Usage: %s TRACKER_URL [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "用法:%s TRACKER_URL [TORRENTFILE [TORRENTFILE ...] ]"
+
+#: changetracker-console.py:32
+#, python-format
+msgid "old announce for %s: %s"
+msgstr "關於 %s 的舊發佈:%s"
+
+#: launchmany-console.py:35 launchmany-curses.py:236
+msgid "no torrents"
+msgstr "沒有 torrent"
+
+#: launchmany-console.py:49 launchmany-curses.py:274
+msgid "SYSTEM ERROR - EXCEPTION GENERATED"
+msgstr "系統錯誤 - 出現例外情況"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid "Warning: "
+msgstr "警告:"
+
+#: launchmany-console.py:64 launchmany-curses.py:294
+msgid " is not a directory"
+msgstr " 不是目錄"
+
+#: launchmany-console.py:66
+#, python-format
+msgid "error: %s\nrun with no args for parameter explanations"
+msgstr "錯誤:%s\n請在執行時不加上任何選項以顯示每個選項的解釋"
+
+#: launchmany-console.py:71 launchmany-curses.py:301
+msgid "\nEXCEPTION:"
+msgstr "\n例外情況:"
+
+#: launchmany-curses.py:47
+msgid "You may still use \"btdownloadheadless.py\" to download."
+msgstr "您仍然可以使用「btdownloadheadless.py」來下載。"
+
+#: launchmany-curses.py:59 BitTorrent/launchmanycore.py:145
+msgid "connecting to peers"
+msgstr "連接到對等點中"
+
+#: launchmany-curses.py:60
+#, python-format
+msgid "ETA in %d:%02d:%02d"
+msgstr "估計 %d:%02d:%02d 後完成"
+
+#: launchmany-curses.py:143
+msgid "Size"
+msgstr "大小"
+
+#: launchmany-curses.py:143
+msgid "Upload"
+msgstr "上傳"
+
+#: launchmany-curses.py:155 launchmany-curses.py:248
+msgid "Totals:"
+msgstr "總數:"
+
+#: launchmany-curses.py:214
+#, python-format
+msgid " (%s) %s - %s peers %s seeds %s dist copies - %s dn %s up"
+msgstr ""
+
+#: launchmany-curses.py:296 BitTorrent/track.py:852
+msgid "error: "
+msgstr "錯誤:"
+
+#: launchmany-curses.py:296
+msgid "\nrun with no args for parameter explanations"
+msgstr "\n請在執行時不加上任何選項,以顯示每個選項的解釋"
+
+#: maketorrent-console.py:29
+msgid "optional human-readable comment to put in .torrent"
+msgstr "加入 .torrent 檔的註解 (選擇性)"
+
+#: maketorrent-console.py:31
+msgid "optional target file for the torrent"
+msgstr "torrent 的目標檔案 (選擇性)"
+
+#: torrentinfo-console.py:26
+#, python-format
+msgid "%s %s - decode %s metainfo files"
+msgstr ""
+
+#: torrentinfo-console.py:30
+#, python-format
+msgid "Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]"
+msgstr "用法:%s [TORRENT檔 [TORRENT檔 ... ] ]"
+
+#: torrentinfo-console.py:34
+#, python-format
+msgid "metainfo file: %s"
+msgstr "元資料檔案:%s"
+
+#: torrentinfo-console.py:35
+#, python-format
+msgid "info hash: %s"
+msgstr "資訊雜湊值:%s"
+
+#: torrentinfo-console.py:36
+#, python-format
+msgid "file name: %s"
+msgstr "檔案名稱:%s"
+
+#: torrentinfo-console.py:37
+msgid "file size:"
+msgstr "檔案大小:"
+
+#: torrentinfo-console.py:38
+msgid "files:"
+msgstr "檔案:"
+
+#: torrentinfo-console.py:39
+#, python-format
+msgid "directory name: %s"
+msgstr "目錄名稱:%s"
+
+#: torrentinfo-console.py:40
+msgid "archive size:"
+msgstr "歸檔大小:"
+
+#: torrentinfo-console.py:41
+#, python-format
+msgid "tracker announce url: %s"
+msgstr "追蹤器發佈 url :%s"
+
+#: torrentinfo-console.py:42
+msgid "trackerless nodes:"
+msgstr "無追蹤程式的節點:"
+
+#: torrentinfo-console.py:43
+msgid "comment:"
+msgstr "備註:"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Mon"
+msgstr "週一"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Tue"
+msgstr "週二"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Wed"
+msgstr "週三"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Thu"
+msgstr "週四"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Fri"
+msgstr "週五"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sat"
+msgstr "週六"
+
+#: BitTorrent/HTTPHandler.py:21
+msgid "Sun"
+msgstr "週日"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jan"
+msgstr "一月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Feb"
+msgstr "二月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Mar"
+msgstr "三月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Apr"
+msgstr "四月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "May"
+msgstr "五月"
+
+#: BitTorrent/HTTPHandler.py:23
+msgid "Jun"
+msgstr "六月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Jul"
+msgstr "七月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Aug"
+msgstr "八月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Sep"
+msgstr "九月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Oct"
+msgstr "十月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Nov"
+msgstr "十一月"
+
+#: BitTorrent/HTTPHandler.py:24
+msgid "Dec"
+msgstr "十二月"
+
+#: BitTorrent/HTTPHandler.py:126
+#, python-format
+msgid "Compressed: %i Uncompressed: %i\n"
+msgstr "壓縮後: %i 未壓縮: %i\n"
+
+#: BitTorrent/configfile.py:72
+msgid "Could not permanently save options: "
+msgstr "不能永久儲存設定:"
+
+#: BitTorrent/configfile.py:84
+#, python-format
+msgid "Error reading config file. Old config file stored in \"%s\""
+msgstr "讀取設定檔時發生錯誤。有舊的設定檔儲存在「%s」"
+
+#: BitTorrent/configfile.py:131
+#, python-format
+msgid "Configuration option mismatch: '%s'"
+msgstr "組態選項不配合:「%s」"
+
+#: BitTorrent/configfile.py:133
+#, python-format
+msgid "You must quit %s and reinstall it. (%s)"
+msgstr "您必須結束 %s 並重新安裝。 (%s)"
+
+#: BitTorrent/configfile.py:218
+#, python-format
+msgid "Could not find translation for language \"%s\"\n"
+msgstr "找不到「%s」語言的翻譯檔\n"
+
+#: BitTorrent/Storage.py:58
+#, python-format
+msgid "File %s belongs to another running torrent"
+msgstr "檔案 %s 屬於另一個執行中的 torrent"
+
+#: BitTorrent/Storage.py:102
+#, python-format
+msgid "File %s already exists, but is not a regular file"
+msgstr "檔案 %s 已經存在,但不是一般檔案"
+
+#: BitTorrent/Storage.py:181
+msgid "Short read - something truncated files?"
+msgstr "讀取的檔案不完整 - 是否有程式截短了檔案?"
+
+#: BitTorrent/Storage.py:224
+msgid "Unsupported fastresume file format, maybe from another client version?"
+msgstr "無法支援這個用作快速續傳的檔案的格式,是否來自另一個程式版本的?"
+
+#: BitTorrent/Storage.py:238
+#, python-format
+msgid ""
+"Another program appears to have moved, renamed, or deleted the file, or %s may have crashed last time it was run."
+msgstr "另一個程式似乎是移動了檔案、更改了名稱、刪除了檔案,或者上次 %s 執行時不正常中止。"
+
+#: BitTorrent/Storage.py:241
+#, python-format
+msgid ""
+"Another program appears to have modified the file, or %s may have crashed last time it was run."
+msgstr "另一個程式似乎是修改了檔案,或者上次 %s 執行時不正常中止。"
+
+#: BitTorrent/Storage.py:244
+#, python-format
+msgid ""
+"Another program appears to have changed the file size, or %s may have crashed last time it was run."
+msgstr "另一個程式似乎是更改了檔案大小,或者上次 %s 執行時不正常中止。"
+
+#: BitTorrent/Storage.py:258 BitTorrent/StorageWrapper.py:284
+msgid "Couldn't read fastresume data: "
+msgstr "無法讀取用作快速續傳的資料:"
+
+#: BitTorrent/RawServer_twisted.py:320
+msgid "connection refused"
+msgstr "連線被拒"
+
+#: BitTorrent/RawServer_twisted.py:535 BitTorrent/RawServer_twisted.py:549 BitTorrent/RawServer_twisted.py:572
+msgid "You asked for reuse to be off when binding. Sorry, I can't do that."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:735
+msgid "listen_forever() should only be called once per reactor."
+msgstr ""
+
+#: BitTorrent/RawServer_twisted.py:747
+msgid ""
+"listen_once() might not return until there is activity, and might not process the event you want. Use listen_forever()."
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:53
+msgid "bad data in responsefile - total too small"
+msgstr "torrent 檔出現壞資料 - 總數太小"
+
+#: BitTorrent/StorageWrapper.py:55
+msgid "bad data in responsefile - total too big"
+msgstr "torrent 檔出現壞資料 - 總數太大"
+
+#: BitTorrent/StorageWrapper.py:100
+msgid "checking existing file"
+msgstr "正在檢查現存的檔案"
+
+#: BitTorrent/StorageWrapper.py:122
+msgid ""
+"--check_hashes 0 or fastresume info doesn't match file state (missing data)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:131
+msgid "Bad fastresume info (files contain more data)"
+msgstr "快速續傳資料錯誤 (檔案有過多的資料)"
+
+#: BitTorrent/StorageWrapper.py:136
+msgid "Bad fastresume info (illegal value)"
+msgstr ""
+
+#: BitTorrent/StorageWrapper.py:252
+msgid "data corrupted on disk - maybe you have two copies running?"
+msgstr "磁碟含有損壞的資料 - 是否有兩個 torrent 程式同時執行?"
+
+#: BitTorrent/StorageWrapper.py:404
+msgid "told file complete on start-up, but piece failed hash check"
+msgstr "該檔案報稱已經完成,但其中有片段的雜湊值有錯誤"
+
+#: BitTorrent/launchmanycore.py:65
+msgid "Could not set signal handler: "
+msgstr "不能設定訊號處理程序:"
+
+#: BitTorrent/launchmanycore.py:71 BitTorrent/launchmanycore.py:92
+#, python-format
+msgid "dropped \"%s\""
+msgstr "丢棄「%s」"
+
+#: BitTorrent/launchmanycore.py:95
+#, python-format
+msgid "added \"%s\""
+msgstr "加入「%s」"
+
+#: BitTorrent/launchmanycore.py:124
+msgid "waiting for hash check"
+msgstr "等待檢查雜湊值"
+
+#: BitTorrent/launchmanycore.py:142 BitTorrent/download.py:397
+msgid "downloading"
+msgstr "下載中"
+
+#: BitTorrent/launchmanycore.py:237
+msgid "Rereading config file"
+msgstr "重新讀入設定檔"
+
+#: BitTorrent/makemetafile.py:60
+msgid ""
+"You can't specify the name of the .torrent file when generating multiple torrents at once"
+msgstr "同時產生多個 torrent 檔的話不可以指定 .torrent 檔名"
+
+#: BitTorrent/makemetafile.py:75
+#, python-format
+msgid "Filesystem encoding \"%s\" is not supported in this version"
+msgstr "這個版本不支援檔案系統文字編碼「%s」"
+
+#: BitTorrent/makemetafile.py:185
+#, python-format
+msgid ""
+"Could not convert file/directory name \"%s\" to utf-8 (%s). Either the assumed filesystem encoding \"%s\" is wrong or the filename contains illegal bytes."
+msgstr "無法將檔案或目錄名稱「%s」轉換為 UTF-8 (%s)。可能是檔案系統文字編碼被錯誤估計為「%s」,或者檔案名稱含有不合法的字元。"
+
+#: BitTorrent/makemetafile.py:190
+#, python-format
+msgid ""
+"File/directory name \"%s\" contains reserved unicode values that do not correspond to characters."
+msgstr "檔案或目錄名稱「%s」含有 unicode 的保留字碼,這些字碼無法表示為任何字元。"
+
+#: BitTorrent/parsedir.py:34
+msgid "Could not read directory "
+msgstr "無法讀取目錄 "
+
+#: BitTorrent/parsedir.py:43
+msgid "Could not stat "
+msgstr "找不到目錄或檔案"
+
+#: BitTorrent/parsedir.py:74
+#, python-format
+msgid "removing %s (will re-add)"
+msgstr "暫時移除 %s (會重新加入)"
+
+#: BitTorrent/parsedir.py:84 BitTorrent/parsedir.py:98
+#, python-format
+msgid "**warning** %s is a duplicate torrent for %s"
+msgstr "**警告** %s 和 %s 是相同的 torrent"
+
+#: BitTorrent/parsedir.py:130
+#, python-format
+msgid "**warning** %s has errors"
+msgstr "**警告** %s 有錯誤"
+
+#: BitTorrent/parsedir.py:138
+msgid "... successful"
+msgstr "... 成功"
+
+#: BitTorrent/parsedir.py:145
+#, python-format
+msgid "removing %s"
+msgstr "移除 %s"
+
+#: BitTorrent/parsedir.py:149
+msgid "done checking"
+msgstr "完成檢查"
+
+#: BitTorrent/GetTorrent.py:44 BitTorrent/GetTorrent.py:92
+#, python-format
+msgid "Could not read %s"
+msgstr "無法讀取 %s"
+
+#: BitTorrent/GetTorrent.py:51
+#, python-format
+msgid ""
+"Could not download or open \n%s\nTry using a web browser to download the torrent file."
+msgstr "無法下載或開啟\n%s\n請嘗試改用網頁瀏覽器下載 torrent 檔。"
+
+#: BitTorrent/__init__.py:22
+#, python-format
+msgid "Python %s or newer required"
+msgstr "需要 Python %s 或較新版本"
+
+#: BitTorrent/RawServer_magic.py:32
+#, python-format
+msgid "Too late to switch RawServer backends, %s has already been used."
+msgstr ""
+
+#: BitTorrent/Rerequester.py:92
+#, python-format
+msgid "Tracker announce still not complete %d seconds after starting it"
+msgstr ""
+
+#: BitTorrent/Rerequester.py:164
+msgid "Problem connecting to tracker, gethostbyname failed - "
+msgstr "連接追蹤程式發生問題,gethostbyname 函式失敗 -"
+
+#: BitTorrent/Rerequester.py:177
+msgid "Problem connecting to tracker - "
+msgstr "連接追蹤程式發生問題 - "
+
+#: BitTorrent/Rerequester.py:204
+msgid "bad data from tracker - "
+msgstr "追蹤程式發出損壞的資料 - "
+
+#: BitTorrent/Rerequester.py:215
+msgid "rejected by tracker - "
+msgstr "被追蹤程式拒絕 - "
+
+#: BitTorrent/Rerequester.py:221
+msgid ""
+"Aborting the torrent as it was rejected by the tracker while not connected to any peers. "
+msgstr "中止 torrent 檔運行,因為被追蹤程式拒絕,而且沒有連上任何對等點。"
+
+#: BitTorrent/Rerequester.py:223
+msgid " Message from the tracker: "
+msgstr "由追蹤程式發出的訊息:"
+
+#: BitTorrent/Rerequester.py:229
+msgid "warning from tracker - "
+msgstr "由追蹤程式發出的警告 - "
+
+#: BitTorrent/Rerequester.py:278
+msgid "Trackerless lookup failed: "
+msgstr ""
+
+#: BitTorrent/btformats.py:23
+msgid "bad metainfo - not a dictionary"
+msgstr ""
+
+#: BitTorrent/btformats.py:26
+msgid "bad metainfo - bad pieces key"
+msgstr ""
+
+#: BitTorrent/btformats.py:29
+msgid "bad metainfo - illegal piece length"
+msgstr "元資料有錯誤 - 片段的大小不合法"
+
+#: BitTorrent/btformats.py:32
+msgid "bad metainfo - bad name"
+msgstr "元資料有錯誤 - 名稱出錯"
+
+#: BitTorrent/btformats.py:34
+#, python-format
+msgid "name %s disallowed for security reasons"
+msgstr "因系統安全理由不接受 %s 這種名稱"
+
+#: BitTorrent/btformats.py:36
+msgid "single/multiple file mix"
+msgstr "單一個/多個檔案混合"
+
+#: BitTorrent/btformats.py:40 BitTorrent/btformats.py:50
+msgid "bad metainfo - bad length"
+msgstr "元資料有錯誤 - 大小不合法"
+
+#: BitTorrent/btformats.py:44
+msgid "bad metainfo - \"files\" is not a list of files"
+msgstr "元資料有錯誤 - 「files」的內容不是檔案清單"
+
+#: BitTorrent/btformats.py:47
+msgid "bad metainfo - file entry must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:53
+msgid "bad metainfo - bad path"
+msgstr "元資料有錯誤 - 路徑錯誤"
+
+#: BitTorrent/btformats.py:56
+msgid "bad metainfo - bad path dir"
+msgstr "元資料有錯誤 - 路徑中的目錄有錯誤"
+
+#: BitTorrent/btformats.py:58
+#, python-format
+msgid "path %s disallowed for security reasons"
+msgstr "因系統安全理由不接受 %s 這種路徑"
+
+#: BitTorrent/btformats.py:69
+msgid "bad metainfo - duplicate path"
+msgstr "元資料有錯誤 - 路徑重複"
+
+#: BitTorrent/btformats.py:71
+msgid "bad metainfo - name used as bothfile and subdirectory name"
+msgstr "元資料有錯誤 - 名稱同時作為檔案和目錄名稱"
+
+#: BitTorrent/btformats.py:78
+msgid "bad metainfo - wrong object type"
+msgstr "元資料有錯誤 - 物件類型錯誤"
+
+#: BitTorrent/btformats.py:81
+msgid "bad metainfo - no announce URL string"
+msgstr ""
+
+#: BitTorrent/btformats.py:89
+msgid "bad metainfo - node is not a list"
+msgstr ""
+
+#: BitTorrent/btformats.py:91
+msgid "bad metainfo - node list must have only two elements"
+msgstr ""
+
+#: BitTorrent/btformats.py:94
+msgid "bad metainfo - node host must be a string"
+msgstr ""
+
+#: BitTorrent/btformats.py:96
+msgid "bad metainfo - node port must be an integer"
+msgstr ""
+
+#: BitTorrent/btformats.py:103
+msgid "failure reason must be a string"
+msgstr "錯誤原因必須是一個字串"
+
+#: BitTorrent/btformats.py:107
+msgid "warning message must be a string"
+msgstr "警告訊息必須是一個字串"
+
+#: BitTorrent/btformats.py:112
+msgid "invalid entry in peer list - peer info must be a dict"
+msgstr ""
+
+#: BitTorrent/btformats.py:114
+msgid "invalid entry in peer list - peer ip must be a string"
+msgstr "對等點清單項目無效 - 對等點 IP 必須是字串"
+
+#: BitTorrent/btformats.py:117
+msgid "invalid entry in peer list - peer port must be an integer"
+msgstr "對等點清單項目無效 - 對等點埠號必須是整數"
+
+#: BitTorrent/btformats.py:121
+msgid "invalid entry in peer list - invalid peerid"
+msgstr "對等點清單項目無效 - peerid 無效"
+
+#: BitTorrent/btformats.py:123
+msgid "invalid peer list"
+msgstr "對等點列表無效"
+
+#: BitTorrent/btformats.py:126
+msgid "invalid announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:129
+msgid "invalid min announce interval"
+msgstr ""
+
+#: BitTorrent/btformats.py:131
+msgid "invalid tracker id"
+msgstr "無效的追蹤程式 id"
+
+#: BitTorrent/btformats.py:134
+msgid "invalid peer count"
+msgstr "對等點總數無效"
+
+#: BitTorrent/btformats.py:137
+msgid "invalid seed count"
+msgstr "種子總數無效"
+
+#: BitTorrent/btformats.py:140
+msgid "invalid \"last\" entry"
+msgstr "「最後」項目無效"
+
+#: BitTorrent/parseargs.py:26
+#, python-format
+msgid "Usage: %s "
+msgstr "用法:%s "
+
+#: BitTorrent/parseargs.py:28
+msgid "[OPTIONS] [TORRENTDIRECTORY]\n\n"
+msgstr "[選項] [TORRENT目錄]\n\n"
+
+#: BitTorrent/parseargs.py:29
+msgid ""
+"If a non-option argument is present it's taken as the value\nof the torrent_dir option.\n"
+msgstr "如果有一個參數不是選項,會以它作為 torrent_dir 選項後的值。\n"
+
+#: BitTorrent/parseargs.py:32
+msgid "[OPTIONS] [TORRENTFILES]\n"
+msgstr "[選項] [TORRENT檔案...]\n"
+
+#: BitTorrent/parseargs.py:34
+msgid "[OPTIONS] [TORRENTFILE]\n"
+msgstr "[選項] [TORRENT檔案]\n"
+
+#: BitTorrent/parseargs.py:36
+msgid "[OPTION] TRACKER_URL FILE [FILE]\n"
+msgstr "[選項] TRACKER_URL 檔案 [檔案]\n"
+
+#: BitTorrent/parseargs.py:38
+msgid "arguments are -\n"
+msgstr "參數是 -\n"
+
+#: BitTorrent/parseargs.py:69
+msgid " (defaults to "
+msgstr " (預設為 "
+
+#: BitTorrent/parseargs.py:118 BitTorrent/parseargs.py:162
+msgid "unknown key "
+msgstr "未知的鑰匙"
+
+#: BitTorrent/parseargs.py:124 BitTorrent/parseargs.py:134
+msgid "parameter passed in at end with no value"
+msgstr ""
+
+#: BitTorrent/parseargs.py:138
+msgid "command line parsing failed at "
+msgstr ""
+
+#: BitTorrent/parseargs.py:145
+#, python-format
+msgid "Option %s is required."
+msgstr "選項需要 %s"
+
+#: BitTorrent/parseargs.py:147
+#, python-format
+msgid "Must supply at least %d arguments."
+msgstr "必須至少提供 %d 個參數。"
+
+#: BitTorrent/parseargs.py:149
+#, python-format
+msgid "Too many arguments - %d maximum."
+msgstr "參數過多 - 最多只接受 %d 個。"
+
+#: BitTorrent/parseargs.py:186
+#, python-format
+msgid "wrong format of %s - %s"
+msgstr "%s 的格式不正確 - %s"
+
+#: BitTorrent/track.py:40
+msgid "Port to listen on."
+msgstr "要開啟的埠號"
+
+#: BitTorrent/track.py:42
+msgid "file to store recent downloader info in"
+msgstr ""
+
+#: BitTorrent/track.py:46
+msgid "timeout for closing connections"
+msgstr "關閉連線所等待的時間"
+
+#: BitTorrent/track.py:50
+msgid "seconds between saving dfile"
+msgstr "儲存 dfile 的時間間隔 (秒)"
+
+#: BitTorrent/track.py:52
+msgid "seconds between expiring downloaders"
+msgstr ""
+
+#: BitTorrent/track.py:54
+msgid "seconds downloaders should wait between reannouncements"
+msgstr ""
+
+#: BitTorrent/track.py:56
+msgid ""
+"default number of peers to send an info message to if the client does not specify a number"
+msgstr ""
+
+#: BitTorrent/track.py:59
+msgid "time to wait between checking if any connections have timed out"
+msgstr "檢查有沒有連線逾時的時間間隔"
+
+#: BitTorrent/track.py:61
+msgid ""
+"how many times to check if a downloader is behind a NAT (0 = don't check)"
+msgstr "檢查多少次下載程式是否在 NAT 背後 (0 表示不檢查)"
+
+#: BitTorrent/track.py:64
+msgid "whether to add entries to the log for nat-check results"
+msgstr "檢查 NAT 的結果是否加入至紀錄中"
+
+#: BitTorrent/track.py:66
+msgid "minimum time it must have been since the last flush to do another one"
+msgstr ""
+
+#: BitTorrent/track.py:69
+msgid ""
+"minimum time in seconds before a cache is considered stale and is flushed"
+msgstr ""
+
+#: BitTorrent/track.py:72
+msgid ""
+"only allow downloads for .torrents in this dir (and recursively in subdirectories of directories that have no .torrent files themselves). If set, torrents in this directory show up on infopage/scrape whether they have peers or not"
+msgstr ""
+
+#: BitTorrent/track.py:79
+msgid ""
+"allow special keys in torrents in the allowed_dir to affect tracker access"
+msgstr ""
+
+#: BitTorrent/track.py:82
+msgid "whether to reopen the log file upon receipt of HUP signal"
+msgstr "收到 HUP 訊號時是否重新開啟紀錄檔"
+
+#: BitTorrent/track.py:84
+msgid "whether to display an info page when the tracker's root dir is loaded"
+msgstr ""
+
+#: BitTorrent/track.py:87
+msgid "a URL to redirect the info page to"
+msgstr "資料頁會重新導向至指定的 URL"
+
+#: BitTorrent/track.py:89
+msgid "whether to display names from allowed dir"
+msgstr ""
+
+#: BitTorrent/track.py:91
+msgid "file containing x-icon data to return when browser requests favicon.ico"
+msgstr ""
+
+#: BitTorrent/track.py:94
+msgid ""
+"ignore the ip GET parameter from machines which aren't on local network IPs (0 = never, 1 = always, 2 = ignore if NAT checking is not enabled). HTTP proxy headers giving address of original client are treated the same as --ip."
+msgstr ""
+
+#: BitTorrent/track.py:99
+msgid "file to write the tracker logs, use - for stdout (default)"
+msgstr "追蹤程式的紀錄會寫入至指定檔案,可使用 - (預設值) 代表標準輸出"
+
+#: BitTorrent/track.py:101
+msgid ""
+"use with allowed_dir; adds a /file?hash={hash} url that allows users to download the torrent file"
+msgstr "配合 allowed_dir 選項使用;它會加入一個 /file?hash={hash} 形式的 URL,讓用戶下載 torrent 檔"
+
+#: BitTorrent/track.py:104
+msgid ""
+"keep dead torrents after they expire (so they still show up on your /scrape and web page). Only matters if allowed_dir is not set"
+msgstr ""
+
+#: BitTorrent/track.py:107
+msgid "scrape access allowed (can be none, specific or full)"
+msgstr ""
+
+#: BitTorrent/track.py:109
+msgid "maximum number of peers to give with any one request"
+msgstr ""
+
+#: BitTorrent/track.py:163
+msgid "your file may exist elsewhere in the universe\nbut alas, not here\n"
+msgstr "檔案可能放在別的地方,但不在這裡\n"
+
+#: BitTorrent/track.py:248
+#, python-format
+msgid "**warning** specified favicon file -- %s -- does not exist."
+msgstr "**警告** 指定的 favicon 檔案 (%s) 不存在。"
+
+#: BitTorrent/track.py:271
+#, python-format
+msgid "**warning** statefile %s corrupt; resetting"
+msgstr "**警告** 狀態檔 %s 損壞;重新啟動"
+
+#: BitTorrent/track.py:307
+msgid "# Log Started: "
+msgstr "# 紀錄開始:"
+
+#: BitTorrent/track.py:309
+msgid "**warning** could not redirect stdout to log file: "
+msgstr "**警告** 無法將標準輸出的內容重新導向至紀錄檔:"
+
+#: BitTorrent/track.py:317
+msgid "# Log reopened: "
+msgstr "# 紀錄再開:"
+
+#: BitTorrent/track.py:319
+msgid "**warning** could not reopen logfile"
+msgstr "**警告** 不能再開紀錄檔案"
+
+#: BitTorrent/track.py:459
+msgid "specific scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:469
+msgid "full scrape function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:482
+msgid "get function is not available with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:496
+msgid "Requested download is not authorized for use with this tracker."
+msgstr ""
+
+#: BitTorrent/track.py:853
+msgid "run with no arguments for parameter explanations"
+msgstr "請在執行時不加任何選項,以顯示每個選項的解釋"
+
+#: BitTorrent/track.py:861
+msgid "# Shutting down: "
+msgstr "# 關閉中:"
+
+#: BitTorrent/Encoder.py:270
+msgid "Can't start two separate instances of the same torrent"
+msgstr "同一個 torrent 不能執行兩次"
+
+#: BitTorrent/TrayIcon.py:65
+#, python-format
+msgid "Hide %s"
+msgstr "隱藏 %s"
+
+#: BitTorrent/TrayIcon.py:67
+#, python-format
+msgid "Show %s"
+msgstr "顯示 %s"
+
+#: BitTorrent/bencode.py:73
+msgid "not a valid bencoded string"
+msgstr "bnecode 字串無效"
+
+#: BitTorrent/bencode.py:75
+msgid "invalid bencoded value (data after valid prefix)"
+msgstr ""
+
+#: BitTorrent/download.py:98
+msgid "maxport less than minport - no ports to check"
+msgstr "埠號的最大值小於最小值 - 不會檢查任何連接埠"
+
+#: BitTorrent/download.py:116
+#, python-format
+msgid "Could not open a listening port: %s."
+msgstr "無法開啟連接埠:%s。"
+
+#: BitTorrent/download.py:118
+#, python-format
+msgid "Could not open a listening port: %s. "
+msgstr "無法開啟連接埠:%s。"
+
+#: BitTorrent/download.py:120
+msgid "Check your port range settings."
+msgstr "請檢查有關埠號使用範圍的設定。"
+
+#: BitTorrent/download.py:216
+msgid "Initial startup"
+msgstr "最初起動"
+
+#: BitTorrent/download.py:269
+#, python-format
+msgid "Could not load fastresume data: %s"
+msgstr "無法載入快速續傳的資料:%s。"
+
+#: BitTorrent/download.py:270
+msgid "Will perform full hash check."
+msgstr "將會執行完整的雜湊值檢查。"
+
+#: BitTorrent/download.py:277
+#, python-format
+msgid "piece %d failed hash check, re-downloading it"
+msgstr "第 %d 段的雜湊值檢查失敗,必須重新下載"
+
+#: BitTorrent/download.py:358
+msgid ""
+"Attempt to download a trackerless torrent with trackerless client turned off."
+msgstr "嘗試下載沒有追蹤程式的 torrent,但程式本身未使用沒有追蹤程式的模式。"
+
+#: BitTorrent/download.py:407
+msgid "download failed: "
+msgstr "下載失敗:"
+
+#: BitTorrent/download.py:411
+msgid "IO Error: No space left on disk, or cannot create a file that large:"
+msgstr "I/O 錯誤:磁碟沒有空間,或者無法建立太大的檔案:"
+
+#: BitTorrent/download.py:414
+msgid "killed by IO error: "
+msgstr "I/O 錯誤以致立即中止:"
+
+#: BitTorrent/download.py:417
+msgid "killed by OS error: "
+msgstr "因作業系統錯誤而立即中止:"
+
+#: BitTorrent/download.py:422
+msgid "killed by internal exception: "
+msgstr "因內部錯誤而立即中止:"
+
+#: BitTorrent/download.py:427
+msgid "Additional error when closing down due to error: "
+msgstr "當關閉時出現額外的錯誤:"
+
+#: BitTorrent/download.py:440
+msgid "Could not remove fastresume file after failure:"
+msgstr "發生錯誤後,無法移除快速續傳檔案:"
+
+#: BitTorrent/download.py:457
+msgid "seeding"
+msgstr "作種中"
+
+#: BitTorrent/download.py:480
+msgid "Could not write fastresume data: "
+msgstr "無法寫入快速續傳資料:"
+
+#: BitTorrent/download.py:490
+msgid "shut down"
+msgstr "關閉"
+
+#: BitTorrent/ConvertedMetainfo.py:51
+msgid ""
+"This seems to be an old Python version which does not support detecting the filesystem encoding. Assuming 'ascii'."
+msgstr "這個 Python 版本似乎比較舊,不能自動偵測檔案系統所用的文字編碼。假設為「ascii」。"
+
+#: BitTorrent/ConvertedMetainfo.py:58
+msgid "Python failed to autodetect filesystem encoding. Using 'ascii' instead."
+msgstr "Python 無法自動偵測檔案系統所用的文字編碼,改用「ascii」編碼。"
+
+#: BitTorrent/ConvertedMetainfo.py:65
+#, python-format
+msgid "Filesystem encoding '%s' is not supported. Using 'ascii' instead."
+msgstr "不支援「%s」檔案系統文字編碼,改用「ascii」編碼。"
+
+#: BitTorrent/ConvertedMetainfo.py:123
+msgid "Bad file path component: "
+msgstr "檔案路徑錯誤:"
+
+#: BitTorrent/ConvertedMetainfo.py:195
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"這個 .torrent 檔是用不恰當的工具製作的,檔案名稱編碼有問題。實際下載的檔案和 .torrent 檔作者本來指定的檔案名稱可能會不一致。"
+
+#: BitTorrent/ConvertedMetainfo.py:201
+msgid ""
+"This .torrent file has been created with a broken tool and has bad character values that do not correspond to any real character. Some or all of the filenames may appear different from what the creator of the .torrent file intended."
+msgstr ""
+"這個 .torrent 檔是用不恰當的工具製作的,某些字元無法表示出來。實際下載的檔案和 .torrent 檔作者本來指定的檔案名稱可能會不一致。"
+
+#: BitTorrent/ConvertedMetainfo.py:208
+msgid ""
+"This .torrent file has been created with a broken tool and has incorrectly encoded filenames. The names used may still be correct."
+msgstr "這個 .torrent 檔是用不恰當的工具製作的,檔案名稱編碼有問題。但實際下載的檔案的名稱可能可以成功顯示。"
+
+#: BitTorrent/ConvertedMetainfo.py:213
+#, python-format
+msgid ""
+"The character set used on the local filesystem (\"%s\") cannot represent all characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr "檔案系統的文字編碼 (「%s」) 無法表示所有這個 torrent 檔會用的字元,因此會更改檔案名稱。"
+
+#: BitTorrent/ConvertedMetainfo.py:219
+msgid ""
+"The Windows filesystem cannot handle some characters used in the filename(s) of this torrent. Filenames have been changed from the original."
+msgstr "Windows 平台無法處理這個 torrent 檔中某些檔案名稱的字元,因此會更改檔案名稱。"
+
+#: BitTorrent/ConvertedMetainfo.py:224
+msgid ""
+"This .torrent file has been created with a broken tool and has at least 1 file with an invalid file or directory name. However since all such files were marked as having length 0 those files are just ignored."
+msgstr ""
+"這個 .torrent 檔是用不恰當的工具製作的,最少有一個檔案或目錄名稱無法顯示。可是因為所有這種檔案大小都是 0,所以全部這類檔案都會略過。"
+
+#: BitTorrent/IPC.py:133
+#, python-format
+msgid "Unhandled command: %s %s"
+msgstr "未能處理的指令:%s %s"
+
+#: BitTorrent/IPC.py:178
+msgid "Could not create control socket: already in use"
+msgstr "不能建立控制 socket:已經使用中"
+
+#: BitTorrent/IPC.py:183
+msgid "Could not remove old control socket filename:"
+msgstr "不能重新命名舊的控制 socket 檔名:"
+
+#: BitTorrent/IPC.py:188
+msgid "Could not create control socket: "
+msgstr "不能建立控制 socket:"
+
+#: BitTorrent/IPC.py:206 BitTorrent/IPC.py:341
+msgid "Could not send command: "
+msgstr "不能傳送指令:"
+
+#: BitTorrent/IPC.py:244
+msgid "Global mutex already created."
+msgstr ""
+
+#: BitTorrent/IPC.py:260
+msgid "Could not find an open port!"
+msgstr "找不到任何開啟的連接埠!"
+
+#: BitTorrent/IPC.py:269
+msgid "Could not create application data directory!"
+msgstr "無法建立存放程式資料的目錄!"
+
+#: BitTorrent/IPC.py:288
+msgid "Could not acquire global mutex lock for controlsocket file!"
+msgstr ""
+
+#: BitTorrent/IPC.py:297
+msgid "A previous instance of BT was not cleaned up properly. Continuing."
+msgstr "上一次執行 BT 後未清理殘餘檔案,會繼續。"
+
+#: BitTorrent/IPC.py:301
+#, python-format
+msgid "Another instance of BT is running, but \"%s\" does not exist.\n"
+msgstr "另一個 BT 已在執行中,但「%s」不存在。\n"
+
+#: BitTorrent/IPC.py:302
+msgid "I'll guess at the port."
+msgstr "會嘗試估計埠號。"
+
+#: BitTorrent/IPC.py:306
+#, python-format
+msgid "Port found: %d"
+msgstr "找到埠號:%d"
+
+#: BitTorrent/IPC.py:317
+msgid "Could not find port."
+msgstr "找不到埠號。"
+
+#: BitTorrent/IPC.py:391
+#, python-format
+msgid "IPC Status: %s"
+msgstr "IPC 狀態:%s"
+
+#: BitTorrent/IPC.py:407
+msgid "DDE Conversation connected."
+msgstr ""
+
+#: BitTorrent/RawServer.py:347
+#, python-format
+msgid "failed to unregister or close server socket: %s"
+msgstr "無法解除或關閉伺服器 socket:%s"
+
+#: BitTorrent/RawServer.py:348
+msgid "lost server socket"
+msgstr "失去伺服器 socket"
+
+#: BitTorrent/RawServer.py:364
+msgid "Error handling accepted connection: "
+msgstr "處理已接受的連線發生錯誤:"
+
+#: BitTorrent/RawServer.py:447
+#, python-format
+msgid "Have to exit due to the TCP stack flaking out. Please see the FAQ at %s"
+msgstr "因為 TCP 堆叠耗盡,程式必須結束。請參閱 %s 的常見問答集"
+
+#: khashmir/krpc.py:214
+msgid "received unknown message type"
+msgstr "收到不明的訊息類型"
+
+#: khashmir/krpc.py:233
+msgid "timeout"
+msgstr "逾時"
+
diff --git a/public.key b/public.key
new file mode 100644
index 0000000..48ec5a6
--- /dev/null
+++ b/public.key
Binary files differ
diff --git a/redirdonate.html b/redirdonate.html
new file mode 100644
index 0000000..f3d4f0c
--- /dev/null
+++ b/redirdonate.html
@@ -0,0 +1 @@
+<meta http-equiv="refresh" content="0;url=http://www.bittorrent.com/donate.html">
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..5ff1134
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen and Matt Chisholm
+
+import os
+os.system('sh ./makei18n.sh')
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+import sys
+from distutils.core import setup, Extension
+from BitTorrent import version, languages
+from BitTorrent.platform import calc_unix_dirs
+
+import glob
+
+# detect case-insensitive filesystem
+case_sensitive_filesystem = True
+os.mkdir('FOO')
+try:
+ f = open('foo', 'w')
+except:
+ case_sensitive_filesystem = False
+else:
+ f.close()
+ os.remove('foo')
+os.rmdir('FOO')
+# done detecting case-insensitive filesystem
+
+symlinks = ["bittorrent" , "bittorrent-curses", "bittorrent-console",
+ "maketorrent", "maketorrent-console",
+ "launchmany-curses", "launchmany-console",
+ "changetracker-console",
+ "torrentinfo-console",
+ "bittorrent-tracker",
+ ]
+
+scripts = []
+
+for s in symlinks:
+ script = s+'.py'
+ if not os.access(s, os.F_OK):
+ os.symlink(script, s)
+ scripts.append(script)
+ os.chmod(script, 0755)
+
+use_scripts = symlinks
+if sys.argv[1:2] == ['sdist'] or not case_sensitive_filesystem:
+ use_scripts = scripts
+
+img_root, doc_root, locale_root = calc_unix_dirs()
+
+translations = []
+for l in languages:
+ path = os.path.join('locale', l, 'LC_MESSAGES', 'bittorrent.mo')
+ if os.access(path, os.F_OK):
+ translations.append((os.path.join(locale_root, l, 'LC_MESSAGES'),
+ [path,]))
+
+data_files = [ (img_root , glob.glob('images/*png')+['images/bittorrent.ico',]),
+ (img_root+'/logo', glob.glob('images/logo/bittorrent_[0-9]*.png' )),
+ (img_root+'/icons/default', glob.glob('images/icons/default/*.png' )),
+ (img_root+'/icons/old' , glob.glob('images/icons/old/*.png' )),
+ (doc_root , ['credits.txt', 'credits-l10n.txt',
+ 'LICENSE.txt', 'README.txt',
+ 'TRACKERLESS.txt', 'redirdonate.html',
+ 'public.key',
+ ] ),
+ ] + translations
+
+setup(
+ name = "BitTorrent",
+ version = version,
+ author = "Bram Cohen",
+ author_email = "bram@bitconjurer.org",
+ url = "http://bittorrent.com/",
+ license = "BitTorrent Open Source License",
+ scripts = use_scripts,
+ packages = ["BitTorrent", "khashmir"],
+ data_files = data_files,
+ )
+
+for s in symlinks:
+ if os.path.islink(s):
+ os.remove(s)
diff --git a/test/test_ClientIdentifier.py b/test/test_ClientIdentifier.py
new file mode 100644
index 0000000..220fe7e
--- /dev/null
+++ b/test/test_ClientIdentifier.py
@@ -0,0 +1,193 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Written by Matt Chisholm
+
+## To use:
+##
+## * modify btdownloadgui.py or some other client to pass a an open (log)
+## file object as the second argument to the
+## ClientIdentifier.identify_client()
+## method. It will log all unknown clients.
+##
+## * run test/test_ClientIdentifier.py with the log file(s) as it's
+## argument(s). It will report any newly identifiable clients in the log
+
+import sys
+sys.path = ['.',] + sys.path #HACK
+
+from BitTorrent import ClientIdentifier
+
+print "Using:", ClientIdentifier
+
+def test(peerid):
+ client, version = ClientIdentifier.identify_client(peerid)
+ try:
+ try:
+ out = peerid.encode('utf8')
+ except:
+ out = peerid.encode('ascii')
+ except:
+ out = repr(peerid)
+
+ if client != 'unknown':
+ print 'identified %s %s\t(from %s)' % (client.encode('utf8'),
+ version, out)
+ else:
+ print 'failed:\t\t\t\t', out
+
+
+lognames = ['unknown_clients.log']
+if len(sys.argv) > 1:
+ lognames = sys.argv[1:]
+
+
+for logname in lognames:
+ log = open(logname, 'r')
+
+ line = log.readline()
+ next = True
+
+ seenids = {}
+
+ while line and next:
+ #print 'l:', line
+ #print 'n:', next
+
+ if line[0:4] == '----':
+ line = log.readline()
+ continue
+
+ peerid = ''
+
+ next = log.readline()
+ while next[0:4] != '----':
+ peerid += line
+ line = next
+ next = log.readline()
+
+ peerid += line[:-1]
+
+ if not seenids.has_key(peerid):
+
+ seenids[peerid] = True
+ test(peerid)
+
+ line = next
+
+def run_tests():
+ print 'running tests'
+ for client, version, peerid in (
+ # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
+ ('BitTorrent', '3.4.2',
+ '\x4D\x33\x2D\x34\x2D\x32\x2D\x2D\x34\x50\x77\x19\x9F\xAE\xC4\xA6\x73\xBE\xCA\x01'),
+ ('BitTorrent (obsolete)', '',
+ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4C\x53\x44\x19\x33\x10\x42\x77'),
+ ('Shareaza', '',
+ '\x8A\x92\x36\xB1\x67\x33\x5B\xDA\xAF\xCC\x85\x34\x5D\x59\x49\xAA\x20\xDB\x6F\xEC'),
+ ('Shareaza', '',
+ '\x95\xAD\x85\x2D\x0A\x2C\x6B\xFD\x3C\x97\xEB\x23\x15\xE5\x68\x59\xCC\xC5\x60\x38'),
+ ('Shareaza', '2.1.3.2',
+ '\x2D\x53\x5A\x32\x31\x33\x32\x2D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
+ ('ABC', '2.6.9',
+ '\x41\x32\x36\x39\x2D\x2D\x2D\x2D\x34\x50\x77\x19\x9F\xAE\xC4\xA6\x73\xBE\xCA\x01'),
+ ('BitComet', '0.56',
+ '\x65\x78\x62\x63\x00\x38\x7A\x44\x63\x10\x2D\x6E\x9A\xD6\x72\x3B\x33\x9F\x35\xA9'),
+ ('Azureus', '2.2.0.0',
+ '\x2D\x41\x5A\x32\x32\x30\x30\x2D\x36\x77\x66\x47\x32\x77\x6B\x36\x77\x57\x4C\x63'),
+ ('burst!', '1.1.3',
+ '\x4D\x62\x72\x73\x74\x31\x2D\x31\x2D\x33\x61\x32\x30\x34\x38\x39\x33\x30\x33\x31'),
+ ("Shadow's", '5.8.11',
+ '\x53\x35\x38\x42\x2D\x2D\x2D\x2D\x2D\x7A\x78\x70\x70\x52\x4C\x4E\x48\x42\x6F\x35'),
+ ('Experimental 3.2.1b2', '',
+ '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x61\xD2\x31\x4F\x4C\x62\xBA'),
+ ('XanTorrent', '',
+ '\x44\x61\x6E\x73\x43\x6C\x69\x65\x6E\x74\x20\x26\x4E\x2A\x12\x0B\xFB\xD1\xC4\x72'),
+ ('XBT', '0.3.6',
+ '\x58\x42\x54\x30\x33\x36\x2D\x2D\x61\x31\x6A\x71\x63\x71\x66\x53\x36\x44\x35\x66'),
+ ('BitMagnet', '0.3.1',
+ '\x00\x1f\x42\x4d\x64\x30\x63\x35\x34\x76\x34\x67\x33\x34\xf4\x3d\x98\x23\x06\x62'),
+ ('eXeem beta', '0.10.0.0',
+ '\x2D\x65\x58\x30\x41\x30\x30\x2D\x79\x4C\x72\x6A\x31\x6B\x48\x6A\x4C\x45\x33\x62'),
+ ('eXeem beta', '0.12.0.0',
+ '\x2D\x65\x58\x30\x43\x30\x30\x2D\x59\x4C\x29\x7A\x4E\x5A\x33\x7A\x30\x6E\x27\x73'),
+ ('eXeem beta', '0.13.0.0',
+ '\x2D\x65\x58\x30\x44\x30\x30\x2D\x67\x70\x21\x2E\x59\x52\x39\x50\x29\x45\x67\x45'),
+ ('eXeem beta', '0.14.0.0',
+ '\x2D\x65\x58\x30\x45\x30\x30\x2D\x6A\x49\x56\x45\x43\x6E\x76\x42\x68\x59\x51\x56'),
+ ('BitBuddy', '0.9.6.1',
+ '\x2D\x42\x42\x30\x39\x36\x31\x2D\x54\x42\x37\x6A\x4A\x5F\x67\x2D\x6F\x55\x47\x66'),
+ ('TorrenTres 0.0.2', '',
+ '\x58\x54\x4F\x52\x52\x33\x30\x32\x2D\xC8\xB2\x84\xCC\x6C\x0F\xD0\xFE\xCD\x46\x5B'),
+ ('TorrentTopia 1.70', '',
+ '\x33\x34\x36\x2D\x2D\x2D\x2D\x2D\x2D\x6E\x2E\x4B\x7A\x65\x46\x50\x30\x6E\x56\x68'),
+ ('TurboBT', '5.0',
+ '\x74\x75\x72\x62\x6F\x62\x74\x35\x2E\x30\x2E\x30\xD1\xA5\x27\xD4\x52\x0D\x7E\x3E'),
+ ('BitSpirit', 'HTTPBT', #2.6.3, 2.7.3
+ '\x00\x00\x00\x00\x00\x00\x00\x00\x70\x98\x28\xCC\x22\xB7\x48\x54\x54\x50\x42\x54'),
+ ('BitSpirit', 'UDP0',
+ '\x00\x1F\x42\x4D\x41\x6E\x6F\x6E\x2E\x27\xC2\x67\x9C\xC3\xA9\xF8\x55\x44\x50\x30'),
+ ('BitSpirit v2', 'HTTPBT',
+ '\x00\x02\x42\x53\x9B\x7E\xD3\xE0\x58\xA8\x38\x4A\xA7\x48\x48\x54\x54\x50\x42\x54'),
+ ('BitSpirit v2', '',
+ '\x00\x02\x42\x53\x07\x2A\xDB\x18\x34\x50\x77\x19\x9F\xAE\xC4\xA6\x73\xBE\xCA\x01'),
+ ('Deadman', '',
+ '\x44\x65\x61\x64\x6D\x61\x6E\x20\x57\x61\x6C\x6B\x69\x6E\x67\x2D\x36\x35\x5A\x56'),
+ ('BTGetit', '0.7.0.8',
+ '\x42\x47\x30\x37\x30\x38\x58\x01\xE8\xCA\x76\x5B\xA7\x8C\x7D\x0B\xBE\xCB\x3D\xB2'),
+ ('eXeem', '', # 2.1
+ '\x65\x58\x64\x30\x63\x35\x34\x76\x34\x67\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
+ ('Bits on Wheels', '0.3',
+ '\x2D\x42\x4F\x57\x50\x30\x33\x2D\x30\x30\x36\x36\x36\x36\x36\x36\x36\x36\x36\x36'),
+ ('BitLord', '0.56',
+ '\x65\x78\x62\x63\x00\x38\x4C\x4F\x52\x44\x32\x00\x04\x8E\xCE\xD5\x7B\xD7\x10\x28'),
+ ('BitComet', '0.56',
+ '\x65\x78\x62\x63\x00\x38\x2A\x8A\x6B\x37\x6D\x84\xBD\xCF\x82\x8C\x25\x9B\x07\x04'),
+ ('CTorrent', '1.3.0.4',
+ '\x2D\x43\x54\x31\x33\x30\x34\x2D\x9C\x74\x41\xCE\xD7\x3E\x6E\x98\x41\x1F\x67\xD7'),
+ ('BitVampire 1.3.1', '', # (spoofs BitComet 0.54 with extra '---'),',
+ '\x65\x78\x62\x63\x00\x36\x2D\x2D\x2D\x55\x21\xE5\xF0\x3A\x78\xC3\x3F\x54\x21\xF1'),
+ ('Plus! II', 'RC 10',
+ '\x50\x6C\x75\x73\x31\x32\x52\x31\x30\x2D\x66\x4E\x36\x6E\x69\x32\x41\x7A\x4F\x4B'),
+ ('GreedBT 2.7.0', '',
+ '\x32\x37\x30\x2D\x2D\x2D\x2D\x2D\x2D\x68\x34\x69\x66\x4B\x7A\x4B\x6E\x4A\x4F\x50'),
+ ('BitTornado', '0.3.10',
+ '\x54\x30\x33\x41\x2D\x2D\x2D\x2D\x2D\x63\x51\x37\x4B\x58\x48\x42\x4E\x73\x32\x64'),
+ ('BitComet', '0.57',
+ '\x65\x78\x62\x63\x00\x39\x2A\x8A\x6B\x37\x6D\x84\xBD\xCF\x82\x8C\x25\x9B\x07\x04'),
+ ('ZipTorrent', '1.2.1.0',
+ '\x2D\x5A\x54\x31\x32\x31\x30\x2D\x6C\x61\x42\x7A\x46\x38\x37\x35\x38\x54\x61\x79'),
+ ('Azureus 2.0.3.2', '',
+ '\x2D\x2D\x2D\x2D\x2D\x41\x7A\x75\x72\x65\x75\x73\x54\x69\x4E\x7A\x2A\x64\x54\xA7'),
+ ('Rufus', '0.6.5',
+ '\x00\x41\x52\x53\x64\x30\x63\x35\x34\x76\x34\x67\x33\xf0\x9a\x46\xca\xa0\x65\x95'),
+ ('Rufus Anonymous', '0.6.5',
+ '\x00\x41\x52\x53\x41\x6e\x6f\x6e\x79\x6d\x6f\x75\x73\x6d\x72\x25\x16\x95\x03\x33'),
+ ('PO (unknown)', '0.0.0.1',
+ '\x2D\x50\x4F\x30\x30\x30\x31\x2D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
+ ('UR (unknown)', '0.1.1.2',
+ '\x2D\x55\x52\x30\x31\x31\x32\x2D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),
+ ('Opera', '7685',
+ 'OP7685f2c1495b1680bf'),
+ ('KTorrent', '1.1 RC 1',
+ '-KT11R1-693649213030'),
+ ):
+ id_client, id_version = ClientIdentifier.identify_client(peerid)
+ show = False
+ if id_client != client:
+ show = True
+ print client, 'misidentified as', id_client, '\t',
+ if id_version != version:
+ show = True
+ print version, 'misidentified as', id_version,
+ if show:
+ print
+ print ' based on', peerid
+run_tests()
diff --git a/torrentinfo-console b/torrentinfo-console
new file mode 120000
index 0000000..e436c6c
--- /dev/null
+++ b/torrentinfo-console
@@ -0,0 +1 @@
+torrentinfo-console.py \ No newline at end of file
diff --git a/torrentinfo-console.py b/torrentinfo-console.py
new file mode 100755
index 0000000..e9263e0
--- /dev/null
+++ b/torrentinfo-console.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.1 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Henry 'Pi' James, Loring Holden and Matt Chisholm
+
+from BitTorrent.platform import install_translation
+install_translation()
+
+from sys import *
+from os.path import *
+from sha import *
+from BitTorrent.bencode import *
+from BitTorrent import version, app_name
+
+NAME, EXT = splitext(basename(argv[0]))
+
+print _("%s %s - decode %s metainfo files") % (NAME, version, app_name)
+print
+
+if len(argv) == 1:
+ print _("Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]") % basename(argv[0])
+ print
+ exit(2) # common exit code for syntax error
+
+labels = {'metafile' : _("metainfo file: %s" ),
+ 'infohash' : _("info hash: %s" ),
+ 'filename' : _("file name: %s" ),
+ 'filesize' : _("file size:" ),
+ 'files' : _("files:" ),
+ 'dirname' : _("directory name: %s" ),
+ 'archive' : _("archive size:" ),
+ 'announce' : _("tracker announce url: %s"),
+ 'nodes' : _("trackerless nodes:" ),
+ 'comment' : _("comment:" ),
+ }
+
+maxlength = max( [len(v[:v.find(':')]) for v in labels.values()] )
+# run through l10n-ed labels and make them all the same length
+for k,v in labels.items():
+ if ':' in v:
+ index = v.index(':')
+ newlabel = v.replace(':', '.'*(maxlength-index) + ':')
+ labels[k] = newlabel
+
+for metainfo_name in argv[1:]:
+ metainfo_file = open(metainfo_name, 'rb')
+ metainfo = bdecode(metainfo_file.read())
+ metainfo_file.close()
+ info = metainfo['info']
+ info_hash = sha(bencode(info))
+
+ print labels['metafile'] % basename(metainfo_name)
+ print labels['infohash'] % info_hash.hexdigest()
+ piece_length = info['piece length']
+ if info.has_key('length'):
+ # let's assume we just have a file
+ print labels['filename'] % info['name']
+ file_length = info['length']
+ name = labels['filesize']
+ else:
+ # let's assume we have a directory structure
+ print labels['dirname'] % info['name']
+ print labels['files']
+ file_length = 0;
+ for file in info['files']:
+ path = ''
+ for item in file['path']:
+ if (path != ''):
+ path = path + "/"
+ path = path + item
+ print ' %s (%d)' % (path, file['length'])
+ file_length += file['length']
+ name = labels['archive']
+ piece_number, last_piece_length = divmod(file_length, piece_length)
+ print '%s %i (%i * %i + %i)' \
+ % (name,file_length, piece_number, piece_length, last_piece_length)
+
+ if metainfo.has_key('announce'):
+ print labels['announce'] % metainfo['announce']
+ if metainfo.has_key('nodes'):
+ print labels['nodes']
+ for n in metainfo['nodes']:
+ print '\t%s\t:%d' % (n[0], n[1])
+
+ print labels['comment']
+ if metainfo.has_key('comment'):
+ print metainfo['comment']
+ print
diff --git a/windows_installer/build.bat b/windows_installer/build.bat
new file mode 100644
index 0000000..b7dc671
--- /dev/null
+++ b/windows_installer/build.bat
@@ -0,0 +1,111 @@
+@rem The contents of this file are subject to the BitTorrent Open Source License
+@rem Version 1.0 (the License). You may not copy or use this file, in either
+@rem code or executable form, except in compliance with the License. You
+@rem may obtain a copy of the License at http://www.bittorrent.com/license/.
+@rem
+@rem Software distributed under the License is distributed on an AS IS basis,
+@rem WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+@rem for the specific language governing rights and limitations under the
+@rem License.
+
+@rem For Python 2.3:
+@rem set PYTHON=python23
+@rem For Python 2.4:
+set PYTHON=Python24
+
+@rem For GTK 2.4:
+@rem set WIMP_DIR_NAME=wimp
+@rem For GTK 2.6 and 2.8:
+set WIMP_DIR_NAME=MS-Windows
+
+@rem copy the important files to the root, so we don't have to hardcode paths
+@rem all over the place
+
+@if exist "windows_installer\build.bat" goto continue
+@echo You must run build.bat from within the root directory
+:continue
+
+cd windows_installer
+
+copy winsetup.py ..
+copy winmakei18n.py ..
+copy installer.directory.ini ..
+copy installer.upgrade.ini ..
+copy installer.warning.rtf ..
+
+cd ..
+
+del /F /S /Q build dist
+c:\%PYTHON%\python.exe winmakei18n.py
+@if errorlevel 1 goto error
+c:\%PYTHON%\python.exe winsetup.py py2exe
+@if errorlevel 1 goto error
+
+copy %GTK_BASEPATH%\bin\libpng12.dll dist\
+@if errorlevel 1 goto error
+copy %GTK_BASEPATH%\bin\zlib1.dll dist\
+@if errorlevel 1 goto error
+copy %GTK_BASEPATH%\bin\libpangoft2-1.0-0.dll dist\
+@if errorlevel 1 goto error
+@rem I don't think this is needed:
+@rem copy %GTK_BASEPATH%\bin\libxml2.dll dist\
+
+mkdir dist\etc\pango
+copy %GTK_BASEPATH%\etc\pango dist\etc\pango
+@if errorlevel 1 goto error
+
+mkdir dist\etc\gtk-2.0\
+copy %GTK_BASEPATH%\etc\gtk-2.0\gdk-pixbuf.loaders dist\etc\gtk-2.0
+@if errorlevel 1 goto error
+
+mkdir dist\lib\gtk-2.0\2.4.0\loaders
+copy %GTK_BASEPATH%\lib\gtk-2.0\2.4.0\loaders\libpixbufloader-png.dll dist\lib\gtk-2.0\2.4.0\loaders
+@if errorlevel 1 goto error
+copy %GTK_BASEPATH%\lib\gtk-2.0\2.4.0\loaders\libpixbufloader-xpm.dll dist\lib\gtk-2.0\2.4.0\loaders
+@if errorlevel 1 goto error
+copy %GTK_BASEPATH%\lib\gtk-2.0\2.4.0\loaders\libpixbufloader-ico.dll dist\lib\gtk-2.0\2.4.0\loaders
+@if errorlevel 1 goto error
+
+mkdir dist\lib\pango\1.4.0\modules
+copy %GTK_BASEPATH%\lib\pango\1.4.0\modules\pango-basic-win32.dll dist\lib\pango\1.4.0\modules\
+@if errorlevel 1 goto error
+copy %GTK_BASEPATH%\lib\pango\1.4.0\modules\pango-basic-fc.dll dist\lib\pango\1.4.0\modules\
+@if errorlevel 1 goto error
+
+@rem This never could have been working. 'copy' does not recurse subdirectories
+@rem I think the task this is supposed to accomplish is in winsetup.py
+@rem copy %GTK_BASEPATH%\lib\locale dist\lib\
+@rem @if errorlevel 1 goto error
+
+copy %GTK_BASEPATH%\etc\gtk-2.0\gtkrc dist\etc\gtk-2.0
+@if errorlevel 1 goto error
+mkdir dist\lib\gtk-2.0\2.4.0\engines
+copy %GTK_BASEPATH%\lib\gtk-2.0\2.4.0\engines\libwimp.dll dist\lib\gtk-2.0\2.4.0\engines
+@if errorlevel 1 goto error
+
+mkdir dist\share\themes\%WIMP_DIR_NAME%\gtk-2.0
+copy %GTK_BASEPATH%\share\themes\%WIMP_DIR_NAME%\gtk-2.0\gtkrc dist\share\themes\%WIMP_DIR_NAME%\gtk-2.0
+@if errorlevel 1 goto error
+
+c:\%PYTHON%\python.exe windows_installer\winprepnsi.py windows_installer\installer.nsi installer.temp.nsi
+@if errorlevel 1 goto error
+"C:\Program Files\NSIS\makensis.exe" installer.temp.nsi
+@if errorlevel 1 goto error
+del installer.temp.nsi
+@if errorlevel 1 goto error
+
+@rem cleanup
+del winsetup.py
+del winmakei18n.py
+del installer.directory.ini
+del installer.upgrade.ini
+del installer.warning.rtf
+
+
+@goto done
+
+:error
+@echo -------------------------------------------------------------------------------
+@echo Build failed.
+
+:done \ No newline at end of file
diff --git a/windows_installer/installer.directory.ini b/windows_installer/installer.directory.ini
new file mode 100644
index 0000000..d56f2c2
--- /dev/null
+++ b/windows_installer/installer.directory.ini
@@ -0,0 +1,56 @@
+[Field 1]
+Type=Label
+Text=Setup will install $5 in the following folder. To install in a different folder, click Browse and select another folder. Click Next to continue.
+Left=0
+Right=-1
+Top=0
+Bottom=30
+
+[Field 2]
+Type=Label
+Text=Select the install type:
+Left=0
+Right=80
+Top=40
+Bottom=56
+
+[Field 3]
+Type=DropList
+ListItems=Default Install|Custom Location
+State=Default Install
+Notify=ONSELCHANGE
+Left=80
+Right=-80
+Top=38
+Bottom=94
+
+[Field 4]
+Type=GroupBox
+Text=Destination Folder
+Left=0
+Right=-1
+Top=70
+Bottom=105
+
+[Field 5]
+Type=Text
+State=$4
+Left=10
+Right=-75
+Top=85
+Bottom=97
+
+[Field 6]
+Type=Button
+Flags=DIRREQUEST
+Text=B&rowse...
+Notfy=ONCLICK
+ListItems=Select the folder to install $5 in:
+RefFields=5
+Notify=ONCLICK
+State=$4
+Left=-67
+Right=-12
+Top=83
+Bottom=98
+
diff --git a/windows_installer/installer.nsi b/windows_installer/installer.nsi
new file mode 100644
index 0000000..92bc282
--- /dev/null
+++ b/windows_installer/installer.nsi
@@ -0,0 +1,651 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.0 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen, Matt Chisholm and Greg Hazel
+
+
+;--------------------------------
+;Include Modern UI
+
+!include "MUI.nsh"
+
+
+; replaced by winprepnsi.py
+!define VERSION "%VERSION%"
+!define APPNAME "%APP_NAME%"
+
+Outfile ${APPNAME}-${VERSION}.exe
+Name "${APPNAME}"
+
+;SilentInstall silent
+
+; automatically close the installer when done.
+;AutoCloseWindow true
+
+CRCCheck on
+
+SetCompressor /SOLID lzma
+
+; adds xp style support
+XPStyle on
+
+InstProgressFlags smooth
+InstallDir "$PROGRAMFILES\${APPNAME}\"
+; " this fixes syntax highlighting in xemacs :)
+
+!define EXENAME "bittorrent.exe"
+VAR KILLEXENAME
+VAR UPGRADE
+
+!define MUI_ICON "images\bittorrent.ico"
+;!define MUI_UNICON "images\bittorrent.ico"
+
+!define MUI_LANGDLL_ALWAYSSHOW
+!define MUI_LANGDLL_REGISTRY_ROOT HKCU
+!define MUI_LANGDLL_REGISTRY_KEY "Software\BitTorrent"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
+
+;--------------------------------
+;Pages
+
+ Page custom installer.upgrade
+ Page custom uninstall
+
+!define MUI_PAGE_CUSTOMFUNCTION_SHOW disableBackButton
+!define MUI_PAGE_HEADER_TEXT "Warning"
+!define MUI_PAGE_HEADER_SUBTEXT "From ${APPNAME}"
+!define MUI_LICENSEPAGE_TEXT_TOP "${APPNAME} is 100% FREE, and it always will be."
+!define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
+!define MUI_LICENSEPAGE_TEXT_BOTTOM " "
+ !insertmacro MUI_PAGE_LICENSE "installer.warning.rtf"
+
+ Page custom installer.directory installer.directory.leave
+
+ !define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT "${APPNAME} has been successfully installed!"
+ !insertmacro MUI_PAGE_INSTFILES
+
+!define MUI_FINISHPAGE_TITLE "${APPNAME} Setup Complete"
+!define MUI_FINISHPAGE_RUN "$INSTDIR\bittorrent.exe"
+; this is an opt-in url, we want to make it opt-out
+;!define MUI_FINISHPAGE_LINK "http://search.bittorrent.com"
+;!define MUI_FINISHPAGE_LINK_LOCATION http://search.bittorrent.com
+; so we hi-jack the readme option
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "&Visit http://search.bittorrent.com to search for torrents!"
+!define MUI_FINISHPAGE_SHOWREADME http://search.bittorrent.com
+
+!define MUI_FINISHPAGE_NOREBOOTSUPPORT
+ !insertmacro MUI_PAGE_FINISH
+
+ !insertmacro MUI_UNPAGE_CONFIRM
+ !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+%LANG_MACROS%
+
+; example:
+;LangString TEXT_FOO ${LANG_ENGLISH} "Foo thing in English"
+
+
+;--------------------------------
+;Reserve Files
+
+ ;Things that need to be extracted on first (keep these lines before any File command!)
+ ;Only for BZIP2 compression
+
+ ReserveFile "installer.upgrade.ini"
+ ReserveFile "installer.directory.ini"
+ !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+Var HWND
+Var DLGITEM
+
+Function uninstall
+
+ ;; IMPORTANT: We cannot ever run any old installers, because they might delete the
+ ;; old installation directory, including any data the user might have stored there.
+ ;; Newer uninstallers play nice, but we cannot tell them apart.
+
+ ; check here too, since this page is run either way
+ ;Call GetUninstallString
+ ;Pop $R0
+
+ ;StrCmp $R0 "" nextuninst
+
+ ;;Run the uninstaller
+ ;;Do not copy the uninstaller to a temp file
+ ;ExecWait '$R0 /S'
+ ;IfErrors 0 nextuninst
+ ;ExecWait '$R0 /S'
+ ;Sleep 2000
+ ;IfErrors no_remove_uninstaller
+ ;Goto nextuninst
+ ;no_remove_uninstaller:
+ ; Call MagicUninstall
+
+ nextuninst:
+ Call QuitIt
+ ClearErrors
+ Delete $INSTDIR\btdownloadgui.exe
+ IfErrors deleteerror
+ Delete $INSTDIR\btmaketorrentgui.exe
+ IfErrors deleteerror
+ Delete $INSTDIR\bittorrent.exe
+ IfErrors deleteerror
+ Delete $INSTDIR\maketorrent.exe
+ IfErrors deleteerror
+ Delete $INSTDIR\choose_language.exe
+ IfErrors deleteerror
+ goto endofdelete
+ deleteerror:
+ MessageBox MB_OK "Removing old BitTorrent exe files failed. You must quit BitTorrent and uninstall it before installing this version."
+ Abort
+ endofdelete:
+
+ Call MagicUninstall
+
+ endofuninst:
+FunctionEnd
+
+Function installer.upgrade
+ !insertmacro MUI_HEADER_TEXT "Upgrade" "${APPNAME} ${VERSION}"
+
+ !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "installer.upgrade.ini"
+ Pop $HWND ;HWND of dialog
+
+ GetDlgItem $DLGITEM $HWND 1200 ;1200 + Field number - 1
+ SendMessage $DLGITEM ${WM_SETTEXT} 0 "STR:A version of ${APPNAME} is already installed."
+
+ GetDlgItem $DLGITEM $HWND 1201 ;1200 + Field number - 1
+ SendMessage $DLGITEM ${WM_SETTEXT} 0 "STR:This installer will upgrade to ${APPNAME} ${VERSION}."
+
+ !insertmacro MUI_INSTALLOPTIONS_SHOW
+FunctionEnd
+
+Function installer.directory
+
+ StrCmp $UPGRADE "no" OK
+ Abort
+
+ OK:
+
+ !insertmacro MUI_HEADER_TEXT "Choose Install Location" "Choose the folder in which to install ${APPNAME}"
+
+ StrCpy $4 $INSTDIR
+ StrCpy $5 ${APPNAME}
+
+ InstallOptionsEx::initDialog /NOUNLOAD "$PLUGINSDIR\installer.directory.ini"
+
+ Pop $hwnd ;HWND of dialog
+
+ !insertmacro MUI_INSTALLOPTIONS_READ $0 "installer.directory.ini" "Field 3" "State"
+ StrCmp $0 "Default Install" 0 show
+ GetDlgItem $DLGITEM $hwnd 1204
+ EnableWindow $DLGITEM 0
+ GetDlgItem $DLGITEM $hwnd 1205
+ EnableWindow $DLGITEM 0
+
+ show:
+ InstallOptionsEx::show
+ Pop $R0
+FunctionEnd
+
+Function installer.directory.leave
+ ; At this point the user has either pressed Next or one of our custom buttons
+ ; We find out which by reading from the INI file
+ !insertmacro MUI_INSTALLOPTIONS_READ $0 "installer.directory.ini" "Settings" "State"
+ StrCmp $0 0 page
+ StrCmp $0 3 droplist
+ Abort ; Return to the page
+
+droplist:
+ ; Make the DirRequest field depend on the droplist
+ !insertmacro MUI_INSTALLOPTIONS_READ $0 "installer.directory.ini" "Field 3" "State"
+ StrCmp $0 "Custom Location" +3
+ StrCpy $0 0
+ Goto +2
+ StrCpy $0 1
+ GetDlgItem $1 $hwnd 1204 ; DirRequest control
+ EnableWindow $1 $0
+ GetDlgItem $1 $hwnd 1205 ; button (the following control)
+ EnableWindow $1 $0
+ Abort ; Return to the page
+
+page:
+ !insertmacro MUI_INSTALLOPTIONS_READ $0 "installer.directory.ini" "Settings" "Notify"
+ StrCmp $0 "ONNEXT" save
+ Abort
+
+save:
+ ; At this point we know the Next button was pressed, so perform any validation and reading
+ !insertmacro MUI_INSTALLOPTIONS_READ $INSTDIR "installer.directory.ini" "Field 5" "State"
+
+FunctionEnd
+
+Function disableBackButton
+ FindWindow $0 "#32770" "" $HWNDPARENT
+ GetDlgItem $1 $HWNDPARENT 3 ; back button
+ ShowWindow $1 ${SW_HIDE}
+FunctionEnd
+
+; This function ensures that you have administrator privileges
+; it is copied from:
+;http://nsis.sourceforge.net/archive/viewpage.php?pageid=275
+Function IsUserAdmin
+ Push $R0
+ Push $R1
+ Push $R2
+
+ ClearErrors
+ UserInfo::GetName
+ IfErrors Win9x
+ Pop $R1
+ UserInfo::GetAccountType
+ Pop $R2
+
+ StrCmp $R2 "Admin" 0 Continue
+ StrCpy $R0 "true"
+ Goto Done
+
+ Continue:
+ StrCmp $R2 "" Win9x
+ StrCpy $R0 "false"
+ Goto Done
+
+ Win9x:
+ StrCpy $R0 "true"
+
+ Done:
+
+ Pop $R2
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+!macro GetUninstallString UN
+Function ${UN}GetUninstallString
+ ReadRegStr $R0 HKLM \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" \
+ "UninstallString"
+ Push $R0
+FunctionEnd
+!macroend
+
+!macro GetOldPath UN
+Function ${UN}GetOldPath
+ Call ${UN}GetUninstallString
+
+ Pop $0
+
+ StrCpy $1 $0 1 0 ; get firstchar
+ StrCmp $1 '"' "" getparent
+ ; if first char is ", let's remove "s first.
+ StrCpy $0 $0 "" 1
+ StrCpy $1 0
+ rqloop:
+ StrCpy $2 $0 1 $1
+ StrCmp $2 '"' rqdone
+ StrCmp $2 "" rqdone
+ IntOp $1 $1 + 1
+ Goto rqloop
+ rqdone:
+ StrCpy $0 $0 $1
+ getparent:
+ ; the uninstall string goes to an EXE, lets get the directory.
+ StrCpy $1 -1
+ gploop:
+ StrCpy $2 $0 1 $1
+ StrCmp $2 "" gpexit
+ StrCmp $2 "\" gpexit
+ #"emacs
+ IntOp $1 $1 - 1
+ Goto gploop
+ gpexit:
+ StrCpy $0 $0 $1
+
+ Push $0
+
+FunctionEnd
+!macroend
+
+!macro CheckForIt UN
+Function ${UN}CheckForIt
+
+ Processes::FindProcess $KILLEXENAME
+ StrCmp $R0 "1" foundit didntfindit
+
+ foundit:
+ MessageBox MB_OKCANCEL "You must quit ${APPNAME} ($KILLEXENAME) \
+ before installing this version.$\r$\nPlease quit it and press \
+ OK to continue." IDOK tryagain
+ Abort
+
+ tryagain:
+
+ Sleep 2000
+ Processes::FindProcess $KILLEXENAME
+ StrCmp $R0 "1" stillthere didntfindit
+
+ stillthere:
+ MessageBox MB_OKCANCEL "There is still a copy of ${APPNAME} \
+ ($KILLEXENAME) running.$\r$\nPress OK to force-quit the application, \
+ or Cancel to exit." IDOK killit
+ Abort
+
+ killit:
+ KillProcDLL::KillProc $KILLEXENAME
+ Sleep 1000
+
+ didntfindit:
+
+FunctionEnd
+!macroend
+
+!macro QuitIt UN
+Function ${UN}QuitIt
+ StrCpy $KILLEXENAME "btdownloadgui.exe"
+ Call ${UN}CheckForIt
+ StrCpy $KILLEXENAME "bittorrent.exe"
+ Call ${UN}CheckForIt
+ StrCpy $KILLEXENAME "btmaketorrentgui.exe"
+ Call ${UN}CheckForIt
+ StrCpy $KILLEXENAME "maketorrent.exe"
+ Call ${UN}CheckForIt
+ StrCpy $KILLEXENAME "choose_language.exe"
+ Call ${UN}CheckForIt
+ StrCpy $KILLEXENAME ""
+FunctionEnd
+!macroend
+
+!macro MagicUninstall UN
+Function ${UN}MagicUninstall
+ ;; this would remove other associations / context menu items too
+ ; DeleteRegKey HKCR .torrent
+ ; DeleteRegKey HKCR "MIME\Database\Content Type\application/x-bittorrent"
+
+ ;; disassociate our missing Application manually, windows takes care of the rest
+ DeleteRegKey HKCR "Applications\${EXENAME}.exe"
+ DeleteRegKey HKLM "Software\Classes\Applications\${EXENAME}.exe"
+ ; just in case
+ DeleteRegKey HKCR "Applications\btdownloadgui.exe"
+ DeleteRegKey HKLM "Software\Classes\Applications\btdownloadgui.exe"
+
+ ;; be nice and put back what we removed
+ ReadRegStr $R1 HKCR "bittorrent\shell\open\command" "backup"
+ StrCmp $R1 "" delete restore
+ restore:
+ WriteRegStr HKCR "bittorrent\shell\open\command" "" $R1
+ goto continue
+ delete:
+ DeleteRegKey HKCR bittorrent
+ continue:
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
+
+ ;; we do not currently restore backups on torrent:// stuff
+ DeleteRegKey HKCR torrent
+
+ Call ${UN}GetOldPath
+ Pop $R0
+ StrCmp $R0 "" 0 remove
+ StrCpy $R0 $INSTDIR
+ remove:
+
+
+ ; some users like to store important data in our directory
+ ; be nice to them
+ ;RMDir /r "$R0"
+
+ Delete "$R0\*.exe"
+ Delete "$R0\*.pyd"
+ Delete "$R0\*.dll"
+ Delete "$R0\library.zip"
+ RMDir /r "$R0\images"
+ RMDir /r "$R0\lib"
+ RMDir /r "$R0\etc"
+ RMDir /r "$R0\share"
+ RMDir /r "$R0\locale"
+ Delete "$R0\redirdonate.html"
+ Delete "$R0\credits.txt"
+ Delete "$R0\credits-l10n.txt"
+ Delete "$R0\LICENSE.txt"
+ Delete "$R0\README.txt"
+ Delete "$R0\TRACKERLESS.txt"
+ Delete "$R0\public.key"
+
+ ClearErrors
+ RMDir "$R0"
+
+ IfErrors 0 dontwarn
+ MessageBox MB_OK "Not deleting $R0,$\r$\nbecause there are extra files or directories in it, or it is in use."
+ dontwarn:
+
+ SetShellVarContext current
+ Delete "$SMSTARTUP\${APPNAME}.lnk"
+
+ SetShellVarContext all
+ Delete "$DESKTOP\${APPNAME}.lnk"
+ RMDir /r "$SMPROGRAMS\${APPNAME}"
+
+FunctionEnd
+!macroend
+
+;awesome voodoo
+!insertmacro CheckForIt ""
+!insertmacro CheckForIt "un."
+
+!insertmacro QuitIt ""
+!insertmacro QuitIt "un."
+
+!insertmacro GetUninstallString ""
+!insertmacro GetUninstallString "un."
+
+!insertmacro GetOldPath ""
+!insertmacro GetOldPath "un."
+
+!insertmacro MagicUninstall ""
+!insertmacro MagicUninstall "un."
+
+Function .onInit
+ BringToFront
+
+ ;Language selection dialog
+ !insertmacro MUI_LANGDLL_DISPLAY
+
+ Call QuitIt
+ ClearErrors
+
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "installer.directory.ini"
+
+ ; check for an installed copy, and add the upgrade page if needed
+ Call GetOldPath
+ Pop $R0
+ StrCmp $R0 "" notupgrading
+ StrCpy $UPGRADE "yes"
+ StrCpy $INSTDIR $R0
+
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "installer.upgrade.ini"
+
+ Goto done
+ notupgrading:
+ StrCpy $UPGRADE "no"
+ done:
+FunctionEnd
+
+Section "Install" SecInstall
+ SectionIn 1 2
+
+ Call IsUserAdmin
+ Pop $R0
+ StrCmp $R0 "false" abortinstall continueinstall
+
+ abortinstall:
+ MessageBox MB_OK "You must have Administrator privileges to install ${APPNAME}."
+ Goto endofinstall
+
+ continueinstall:
+
+ SetOverwrite try
+
+ SetOutPath $INSTDIR
+ WriteUninstaller "$INSTDIR\uninstall.exe"
+
+ IntFmt $0 "%u" 0
+
+ goto skip
+ files:
+ IntOp $0 $0 + 1
+ IntCmp $0 30 ohcrap
+ Sleep 1000
+ skip:
+
+ File dist\*.exe
+ IfErrors files
+ File dist\*.pyd
+ IfErrors files
+ File dist\*.dll
+ IfErrors files
+ File dist\library.zip
+ IfErrors files
+ File /r dist\images
+ IfErrors files
+ File /r dist\lib
+ IfErrors files
+ File /r dist\etc
+ IfErrors files
+ File /r dist\share
+ IfErrors files
+ File /r dist\locale
+ IfErrors files
+ File redirdonate.html
+ IfErrors files
+ File credits.txt
+ IfErrors files
+ File credits-l10n.txt
+ IfErrors files
+ File LICENSE.txt
+ IfErrors files
+ File README.txt
+ IfErrors files
+ File TRACKERLESS.txt
+ IfErrors files
+ File public.key
+ IfErrors files
+
+ goto success
+ ohcrap:
+ MessageBox MB_OK "While installing BitTorrent, a critical timeout occured. Please reboot, and retry the installer."
+ Abort
+ success:
+
+ ; registry entries
+
+ ; in super old versions of BitTorrent (2.x) some Bad Things were done.
+ ; if we don not clean them up before installing, users get "Invalid Menu Handle"
+ ; after upgrading.
+ DeleteRegKey HKCR "torrent_auto_file"
+ DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.torrent\" "ProgId"
+
+ ; this guards against a reinstallation to a different directory (like d:\...) causing Invalid Menu Handle
+ DeleteRegKey HKCR "Applications\btdownloadgui.exe"
+ DeleteRegKey HKCR "Applications\bittorrent.exe"
+ DeleteRegKey HKCR "Applications\${EXENAME}"
+ DeleteRegKey HKLM "Software\Classes\Applications\btdownloadgui.exe"
+ DeleteRegKey HKLM "Software\Classes\Applications\bittorrent.exe"
+ DeleteRegKey HKLM "Software\Classes\Applications\${EXENAME}"
+
+ ;; make us the default handler for BT files
+ WriteRegStr HKCR .torrent "" bittorrent
+ DeleteRegKey HKCR ".torrent\Content Type"
+ ;; This line maks it so that BT sticks around as an option
+ ;; after installing some other default handler for torrent files
+ WriteRegStr HKCR ".torrent\OpenWithProgids" "bittorrent" ""
+
+ ; this prevents user-preference from generating "Invalid Menu Handle" by looking for an app
+ ; that no longer exists, and instead points it at us.
+ WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.torrent\" Application "${EXENAME}"
+ WriteRegStr HKCR "Applications\${EXENAME}\shell" "" open
+ WriteRegStr HKCR "Applications\${EXENAME}\shell\open\command" "" `"$INSTDIR\${EXENAME}" --responsefile "%1"`
+
+ ;; Add a mime type
+ WriteRegStr HKCR "MIME\Database\Content Type\application/x-bittorrent" Extension .torrent
+
+ ;; Add a shell command to match the 'bittorrent' handler described above
+ WriteRegStr HKCR bittorrent "" "TORRENT File"
+ WriteRegBin HKCR bittorrent EditFlags 00000100
+ ;; make us the default handler for bittorrent://
+ WriteRegBin HKCR bittorrent "URL Protocol" 0
+ WriteRegStr HKCR "bittorrent\Content Type" "" "application/x-bittorrent"
+ WriteRegStr HKCR "bittorrent\DefaultIcon" "" "$INSTDIR\${EXENAME},0"
+ WriteRegStr HKCR "bittorrent\shell" "" open
+
+ ReadRegStr $R1 HKCR "bittorrent\shell\open\command" ""
+ StrCmp $R1 "" continue
+
+ WriteRegStr HKCR "bittorrent\shell\open\command" "backup" $R1
+
+continue:
+ WriteRegStr HKCR "bittorrent\shell\open\command" "" `"$INSTDIR\${EXENAME}" --responsefile "%1"`
+
+ ;; Add a shell command to handle torrent:// stuff
+ WriteRegStr HKCR torrent "" "TORRENT File"
+ WriteRegBin HKCR torrent EditFlags 00000100
+ ;; make us the default handler for torrent://
+ WriteRegBin HKCR torrent "URL Protocol" 0
+ WriteRegStr HKCR "torrent\Content Type" "" "application/x-bittorrent"
+ WriteRegStr HKCR "torrent\DefaultIcon" "" "$INSTDIR\${EXENAME},0"
+ WriteRegStr HKCR "torrent\shell" "" open
+
+ ReadRegStr $R1 HKCR "torrent\shell\open\command" ""
+ WriteRegStr HKCR "torrent\shell\open\command" "backup" $R1
+
+ WriteRegStr HKCR "torrent\shell\open\command" "" `"$INSTDIR\${EXENAME}" --responsefile "%1"`
+
+ ;; Automagically register with the Windows Firewall
+ WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List" "$INSTDIR\${EXENAME}" `$INSTDIR\${EXENAME}:*:Enabled:${APPNAME}`
+
+ ;; Info about install/uninstall
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME} ${VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+
+ ; Add items to start menu
+ SetShellVarContext current
+ CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\${EXENAME}"
+
+ ; Create desktop link
+ SetShellVarContext all
+ CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXENAME}"
+
+ CreateDirectory "$SMPROGRAMS\${APPNAME}"
+ CreateShortCut "$SMPROGRAMS\${APPNAME}\Downloader.lnk" "$INSTDIR\${EXENAME}"
+ CreateShortCut "$SMPROGRAMS\${APPNAME}\Make Torrent.lnk" "$INSTDIR\maketorrent.exe"
+ CreateShortCut "$SMPROGRAMS\${APPNAME}\Donate.lnk" "$INSTDIR\redirdonate.html"
+ CreateShortCut "$SMPROGRAMS\${APPNAME}\Choose Language.lnk" "$INSTDIR\choose_language.exe"
+
+ IfSilent launch_anyway not_silent
+ launch_anyway:
+ ExecShell open "$INSTDIR\${EXENAME}"
+ not_silent:
+
+ BringToFront
+ endofinstall:
+SectionEnd
+
+Function un.onInit
+ ;; gets the stored language from install
+ !insertmacro MUI_UNGETLANGUAGE
+FunctionEnd
+
+Section "Uninstall"
+ Call un.QuitIt
+ ; this should not go in MagicUninstall
+ ; because we want to keep the preference between upgrades
+ DeleteRegKey HKCU "Software\BitTorrent\Language"
+ Call un.MagicUninstall
+SectionEnd
diff --git a/windows_installer/installer.upgrade.ini b/windows_installer/installer.upgrade.ini
new file mode 100644
index 0000000..f247dd1
--- /dev/null
+++ b/windows_installer/installer.upgrade.ini
@@ -0,0 +1,28 @@
+[Settings]
+NumFields=2
+NextButtonText=Upgrade
+
+[Field 1]
+Type=label
+Text="A version of BitTorrent is already installed."
+Left=0
+Right=-1
+Top=0
+Bottom=15
+
+[Field 2]
+Type=label
+Text="This installer will upgrade your version."
+Left=0
+Right=-1
+Top=15
+Bottom=25
+
+[Field 3]
+Type=Radiobutton
+Text=Upgrade
+Left=0
+Right=-1
+Top=60
+Bottom=70
+State=1 \ No newline at end of file
diff --git a/windows_installer/installer.warning.rtf b/windows_installer/installer.warning.rtf
new file mode 100644
index 0000000..e816cff
--- /dev/null
+++ b/windows_installer/installer.warning.rtf
@@ -0,0 +1,8 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\froman\fprq2\fcharset2 Symbol;}}
+{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs16 Some malicious websites are charging money for BitTorrent, committing credit card fraud, and infecting computers with malicious software. If you did not download this copy of BitTorrent from http://www.bittorrent.com/ PROTECT YOURSELF NOW!\par
+\par
+\pard\fi-360\li1080\tx1080\f1\'b7\tab\f0 Check your computer for malicious software.\par
+\f1\'b7\tab\f0 Check your credit card bill for unauthorized charges\par
+\f1\'b7\tab\f0 Cancel the installation NOW and download BitTorrent for free from http://www.bittorrent.com/ \par
+}
+ \ No newline at end of file
diff --git a/windows_installer/template.nlf b/windows_installer/template.nlf
new file mode 100644
index 0000000..6564e56
--- /dev/null
+++ b/windows_installer/template.nlf
@@ -0,0 +1,189 @@
+# Header, don't edit
+NLF v6
+# Language ID
+%(id)s
+# Font and size - dash (-) means default
+-
+-
+# Codepage - dash (-) means ANSI code page
+-
+# RTL - anything else than RTL means LTR
+-
+# ^Branding
+Nullsoft Install System %%s
+# ^SetupCaption
+$(^Name) Setup
+# ^UninstallCaption
+$(^Name) Uninstall
+# ^LicenseSubCaption
+: License Agreement
+# ^ComponentsSubCaption
+: Installation Options
+# ^DirSubCaption
+: Installation Folder
+# ^InstallingSubCaption
+: Installing
+# ^CompletedSubCaption
+: Completed
+# ^UnComponentsSubCaption
+: Uninstallation Options
+# ^UnDirSubCaption
+: Uninstallation Folder
+# ^ConfirmSubCaption
+: Confirmation
+# ^UninstallingSubCaption
+: Uninstalling
+# ^UnCompletedSubCaption
+: Completed
+# ^BackBtn
+< &Back
+# ^NextBtn
+&Next >
+# ^AgreeBtn
+I &Agree
+# ^AcceptBtn
+I &accept the terms in the License Agreement
+# ^DontAcceptBtn
+I &do not accept the terms in the License Agreement
+# ^InstallBtn
+&Install
+# ^UninstallBtn
+&Uninstall
+# ^CancelBtn
+Cancel
+# ^CloseBtn
+&Close
+# ^BrowseBtn
+B&rowse...
+# ^ShowDetailsBtn
+Show &details
+# ^ClickNext
+Click Next to continue.
+# ^ClickInstall
+Click Install to start the installation.
+# ^ClickUninstall
+Click Uninstall to start the uninstallation.
+# ^Name
+Name
+# ^Completed
+Completed
+# ^LicenseText
+Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, click I Agree.
+# ^LicenseTextCB
+Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, click the check box below. $_CLICK
+# ^LicenseTextRB
+Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, select the first option below. $_CLICK
+# ^UnLicenseText
+Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, click I Agree.
+# ^UnLicenseTextCB
+Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, click the check box below. $_CLICK
+# ^UnLicenseTextRB
+Please review the license agreement before uninstalling $(^NameDA). If you accept all terms of the agreement, select the first option below. $_CLICK
+# ^Custom
+Custom
+# ^ComponentsText
+Check the components you want to install and uncheck the components you don't want to install. $_CLICK
+# ^ComponentsSubText1
+Select the type of install:
+# ^ComponentsSubText2_NoInstTypes
+Select components to install:
+# ^ComponentsSubText2
+Or, select the optional components you wish to install:
+# ^UnComponentsText
+Check the components you want to uninstall and uncheck the components you don't want to uninstall. $_CLICK
+# ^UnComponentsSubText1
+Select the type of uninstall:
+# ^UnComponentsSubText2_NoInstTypes
+Select components to uninstall:
+# ^UnComponentsSubText2
+Or, select the optional components you wish to uninstall:
+# ^DirText
+Setup will install $(^NameDA) in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK
+# ^DirSubText
+Destination Folder
+# ^DirBrowseText
+Select the folder to install $(^NameDA) in:
+# ^UnDirText
+Setup will uninstall $(^NameDA) from the following folder. To uninstall from a different folder, click Browse and select another folder. $_CLICK
+# ^UnDirSubText
+""
+# ^UnDirBrowseText
+Select the folder to uninstall $(^NameDA) from:
+# ^SpaceAvailable
+"Space available: "
+# ^SpaceRequired
+"Space required: "
+# ^UninstallingText
+$(^NameDA) will be uninstalled from the following folder. $_CLICK
+# ^UninstallingSubText
+Uninstalling from:
+# ^FileError
+Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Abort to stop the installation,\r\nRetry to try again, or\r\nIgnore to skip this file.
+# ^FileError_NoIgnore
+Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Retry to try again, or\r\nCancel to stop the installation.
+# ^CantWrite
+"Can't write: "
+# ^CopyFailed
+Copy failed
+# ^CopyTo
+"Copy to "
+# ^Registering
+"Registering: "
+# ^Unregistering
+"Unregistering: "
+# ^SymbolNotFound
+"Could not find symbol: "
+# ^CouldNotLoad
+"Could not load: "
+# ^CreateFolder
+"Create folder: "
+# ^CreateShortcut
+"Create shortcut: "
+# ^CreatedUninstaller
+"Created uninstaller: "
+# ^Delete
+"Delete file: "
+# ^DeleteOnReboot
+"Delete on reboot: "
+# ^ErrorCreatingShortcut
+"Error creating shortcut: "
+# ^ErrorCreating
+"Error creating: "
+# ^ErrorDecompressing
+Error decompressing data! Corrupted installer?
+# ^ErrorRegistering
+Error registering DLL
+# ^ExecShell
+"ExecShell: "
+# ^Exec
+"Execute: "
+# ^Extract
+"Extract: "
+# ^ErrorWriting
+"Extract: error writing to file "
+# ^InvalidOpcode
+Installer corrupted: invalid opcode
+# ^NoOLE
+"No OLE for: "
+# ^OutputFolder
+"Output folder: "
+# ^RemoveFolder
+"Remove folder: "
+# ^RenameOnReboot
+"Rename on reboot: "
+# ^Rename
+"Rename: "
+# ^Skipped
+"Skipped: "
+# ^CopyDetails
+Copy Details To Clipboard
+# ^LogInstall
+Log install process
+# ^Byte
+B
+# ^Kilo
+K
+# ^Mega
+M
+# ^Giga
+G
diff --git a/windows_installer/template.nsh b/windows_installer/template.nsh
new file mode 100644
index 0000000..a2e54da
--- /dev/null
+++ b/windows_installer/template.nsh
@@ -0,0 +1,12 @@
+;NSIS Modern User Interface - Language File
+;Compatible with Modern UI 1.68
+
+;Language: %(name)s (%(id)s)
+
+;--------------------------------
+
+!insertmacro MUI_LANGUAGEFILE_BEGIN "%(name)s"
+
+ !define MUI_LANGNAME "%(name)s" ;Use only ASCII characters (if this is not possible, use the English name)
+
+!insertmacro MUI_LANGUAGEFILE_END
diff --git a/windows_installer/winmakei18n.py b/windows_installer/winmakei18n.py
new file mode 100644
index 0000000..5bfe298
--- /dev/null
+++ b/windows_installer/winmakei18n.py
@@ -0,0 +1,37 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.0 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Matt Chisholm
+
+import os
+import sys
+from BitTorrent import languages, language_names
+GNUWIN_BIN = r'C:\Program Files\GnuWin32\bin'
+
+if os.name != 'nt':
+ print "This script is only for use on Win32. Use makei18n.sh to regenerate locales on a Unix OS."
+ sys.exit()
+
+for l in languages:
+ print l
+ #os.system(r'"%s\msgmerge.exe" --no-fuzzy-matching po\%s.po messages.po > locale\%s\LC_MESSAGES\messages.po' % (GNUWIN_BIN,l,l))
+ path = 'locale\%s\LC_MESSAGES' % l
+ if not os.access(path, os.F_OK):
+ os.system('mkdir %s' % path)
+ if not os.path.exists(r'po\%s.po' % (l)):
+ print r'Warning: po\%s.po does not exist.' % (l)
+ else:
+ os.system(r'copy po\%s.po %s\bittorrent.po' %(l,path))
+ os.system(r'"%s\msgfmt.exe" -o %s\bittorrent.mo %s\bittorrent.po' % (GNUWIN_BIN, path, path))
+
+
+
+
+
diff --git a/windows_installer/winprepnsi.py b/windows_installer/winprepnsi.py
new file mode 100644
index 0000000..b620c00
--- /dev/null
+++ b/windows_installer/winprepnsi.py
@@ -0,0 +1,98 @@
+import sys
+import os
+from BitTorrent import version, app_name, languages, language_names
+from BitTorrent.language import locale_sucks
+
+NSIS_DIR = "C:\\Program Files\\NSIS"
+
+if not os.path.exists(NSIS_DIR):
+ raise Exception("Please set NSIS_DIR in winprepnsi.py!")
+
+version_str = version
+if int(version_str[2]) % 2:
+ version_str = version_str + '-Beta'
+
+nsis_language_names = {
+ 'af' :'Afrikaans',
+ 'bg' :'Bulgarian',
+ 'ca' :'Catalan',
+ 'cs' :'Czech',
+ 'da' :'Danish',
+ 'de' :'German',
+ 'en' :'English',
+ 'es' :'Spanish',
+ 'es_MX' :'SpanishMX',
+ 'fr' :'French',
+ 'el' :'Greek',
+ 'hu' :'Hungarian',
+ 'he' :'Hebrew',
+ 'it' :'Italian',
+ 'is' :'Icelandic',
+ 'ja' :'Japanese',
+ 'ko' :'Korean',
+ 'nb_NO' :'Norwegian',
+ 'nl' :'Dutch',
+ 'pl' :'Polish',
+ 'pt' :'Portuguese',
+ 'pt_BR' :'PortugueseBR',
+ 'ro' :'Romanian',
+ 'ru' :'Russian',
+ 'sk' :'Slovak',
+ 'sl' :'Slovenian',
+ 'sv' :'Swedish',
+ 'tr' :'Turkish',
+ 'vi' :'Vietnamese',
+ 'zh_CN' :'TradChinese',
+ 'zh_TW' :'SimpChinese',
+ }
+
+
+
+f = open(sys.argv[1])
+b = f.read()
+f.close()
+b = b.replace("%VERSION%", version_str)
+b = b.replace("%APP_NAME%", app_name)
+
+found_langs = {}
+lang_macros = ""
+for l in languages:
+ lang = nsis_language_names[l]
+ nlf = os.path.join(NSIS_DIR, "Contrib\\Language files\\%s.nlf" % lang)
+ nsh = os.path.join(NSIS_DIR, "Contrib\\Modern UI\\Language files\\%s.nsh" % lang)
+ if os.path.exists(nlf) and os.path.exists(nsh):
+ lang_macros += (' !insertmacro MUI_LANGUAGE "%s"\r\n' % lang)
+ found_langs[l] = lang
+ else:
+ lcid = None
+ for id, code in locale_sucks.iteritems():
+ if code.lower() == l.lower():
+ lcid = id
+
+ print "Creating a template for", lang, lcid
+ f = open(nlf, 'w')
+ template = open("windows_installer\\template.nlf", 'r')
+ template_str = template.read()
+ template.close()
+ t = (template_str % {'id':lcid})
+ f.write(t)
+ f.close()
+
+ f = open(nsh, 'w')
+ template = open("windows_installer\\template.nsh", 'r')
+ template_str = template.read()
+ template.close()
+ t = (template_str % {'name':lang, 'id':lcid})
+ f.write(t)
+ f.close()
+
+
+ lang_macros += (' !insertmacro MUI_LANGUAGE "%s"\r\n' % lang)
+ found_langs[l] = lang
+
+b = b.replace("%LANG_MACROS%", lang_macros)
+
+f = open(sys.argv[2], "w")
+f.write(b)
+f.close()
+
diff --git a/windows_installer/winsetup.py b/windows_installer/winsetup.py
new file mode 100644
index 0000000..4d6f380
--- /dev/null
+++ b/windows_installer/winsetup.py
@@ -0,0 +1,111 @@
+# The contents of this file are subject to the BitTorrent Open Source License
+# Version 1.0 (the License). You may not copy or use this file, in either
+# source code or executable form, except in compliance with the License. You
+# may obtain a copy of the License at http://www.bittorrent.com/license/.
+#
+# Software distributed under the License is distributed on an AS IS basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+
+# Written by Bram Cohen and Matt Chisholm
+
+import os
+import sys
+from distutils.core import setup
+import py2exe
+import glob
+from BitTorrent import languages
+
+if os.name != 'nt':
+ print "This script is only for use on Win32. Use setup.py to install on a Unix OS."
+ sys.exit()
+
+from BitTorrent.platform import get_shell_dir, shellcon
+
+opts = {
+ "py2exe": {
+ "includes":"pango,atk,gobject"
+ ",encodings,encodings.*"
+# ",cjkcodecs,cjkcodecs.*"
+# ",dns,dns.rdtypes.ANY.*,dns.rdtypes.IN.*"
+ ,
+
+# Uncomment the following lines if you want a dist\ directory build by
+# py2exe that works under Win32 with a GTK runtime installed
+# separately:
+## "dll_excludes":["iconv.dll", "intl.dll", "libatk-1-1.0-0.dll",
+## "libgdk_pixbuf-2.0-0.dll", "libgdk-win32-2.0-0.dll",
+## "libglib-2.0-0.dll", "libgmodule-2.0-0.dll",
+## "libgobject-2.0-0.dll", "libgthread-2.0-0.dll",
+## "libgtk-win32-2.0-0.dll", "libpango-1.0-0.dll",
+## "libpangowin32-1.0-0.dll",
+## ],
+ }
+}
+
+# needed for py2exe to find win32com.shell; from http://starship.python.net/crew/theller/moin.cgi/WinShell
+if 1:
+ try:
+ import modulefinder, sys
+ import win32com
+ for p in win32com.__path__[1:]:
+ modulefinder.AddPackagePath("win32com", p)
+ for extra in ["win32com.shell"]: #,"win32com.mapi"
+ __import__(extra)
+ m = sys.modules[extra]
+ for p in m.__path__[1:]:
+ modulefinder.AddPackagePath(extra, p)
+ except ImportError:
+ # no build path setup, no worries.
+ pass
+
+mfc = os.path.join(get_shell_dir(shellcon.CSIDL_SYSTEM), "mfc71.dll")
+ms = [mfc, ]
+
+translations = []
+for l in languages:
+ path = os.path.join('locale', l, 'LC_MESSAGES', 'bittorrent.mo')
+ if os.access(path, os.F_OK):
+ translations.append(("locale\\%s\\LC_MESSAGES" % l,
+ ["locale\\%s\\LC_MESSAGES\\bittorrent.mo" % l,
+ #"locale\\%s\\LC_MESSAGES\\bittorrent.po" % l,
+ ]))
+ gtk_mo = []
+
+ gtk_path = ""
+
+ import gtk
+
+ if (gtk.gtk_version[1] == 4):
+ gtk_path = os.path.join(os.environ["GTK_BASEPATH"], "lib\\locale\\%s\\LC_MESSAGES" % l)
+ elif ((gtk.gtk_version[1] == 6) or (gtk.gtk_version[1] == 8)):
+ gtk_path = os.path.join(os.environ["GTK_BASEPATH"], "share\\locale\\%s\\LC_MESSAGES" % l)
+ else:
+ gtk_path = os.path.join(os.environ["GTK_BASEPATH"], "share\\locale\\%s\\LC_MESSAGES" % l)
+ if not os.path.exists(gtk_path):
+ raise Exception("Unknown gtk version, please locate gtk20.mo etc, and modify this script")
+
+ for fn in ("glib20.mo", "gtk20.mo", "gtk20-properties.mo"):
+ moname = os.path.join(gtk_path, fn)
+ if os.access(moname, os.F_OK):
+ gtk_mo.append(moname)
+ translations.append(("share\\locale\\%s\\LC_MESSAGES" % l, gtk_mo))
+
+setup(windows=[{'script': 'bittorrent.py' ,
+ "icon_resources": [(1, "images\\bittorrent.ico")]},
+ {'script': 'maketorrent.py',
+ "icon_resources": [(1, "images\\bittorrent.ico")]},
+ {'script': 'choose_language.py',
+ "icon_resources": [(1, "images\\bittorrent.ico")]},
+ ],
+ options=opts,
+ data_files=[('',["credits.txt", "LICENSE.txt",
+ "README.txt", "redirdonate.html",
+ "TRACKERLESS.txt","public.key",
+ ]),
+ ("images", ["images\\bittorrent.ico"]),
+ ("images\\icons\\default", glob.glob("images\\icons\\default\\*png")),
+ ("images\\logo", glob.glob("images\\logo\\*png")),
+ ] + ms + translations,
+ )